Daniel Levine / sd-driver_compatible_with_MAX32630FTHR

Dependents:   CircularBufferSDCardLib time_between_inerupt

Committer:
DVLevine
Date:
Tue Mar 20 17:35:00 2018 +0000
Revision:
0:69bfc1595ae5
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DVLevine 0:69bfc1595ae5 1 #include "mbed.h"
DVLevine 0:69bfc1595ae5 2 #include "greentea-client/test_env.h"
DVLevine 0:69bfc1595ae5 3 #include "unity.h"
DVLevine 0:69bfc1595ae5 4 #include "utest.h"
DVLevine 0:69bfc1595ae5 5 #include <stdlib.h>
DVLevine 0:69bfc1595ae5 6 #include <errno.h>
DVLevine 0:69bfc1595ae5 7
DVLevine 0:69bfc1595ae5 8 using namespace utest::v1;
DVLevine 0:69bfc1595ae5 9
DVLevine 0:69bfc1595ae5 10 // test configuration
DVLevine 0:69bfc1595ae5 11 #ifndef MBED_TEST_FILESYSTEM
DVLevine 0:69bfc1595ae5 12 #define MBED_TEST_FILESYSTEM FATFileSystem
DVLevine 0:69bfc1595ae5 13 #endif
DVLevine 0:69bfc1595ae5 14
DVLevine 0:69bfc1595ae5 15 #ifndef MBED_TEST_FILESYSTEM_DECL
DVLevine 0:69bfc1595ae5 16 #define MBED_TEST_FILESYSTEM_DECL MBED_TEST_FILESYSTEM fs("fs")
DVLevine 0:69bfc1595ae5 17 #endif
DVLevine 0:69bfc1595ae5 18
DVLevine 0:69bfc1595ae5 19 #ifndef MBED_TEST_BLOCKDEVICE
DVLevine 0:69bfc1595ae5 20 #define MBED_TEST_BLOCKDEVICE SDBlockDevice
DVLevine 0:69bfc1595ae5 21 #define MBED_TEST_BLOCKDEVICE_DECL SDBlockDevice bd(MBED_CONF_SD_SPI_MOSI, MBED_CONF_SD_SPI_MISO, MBED_CONF_SD_SPI_CLK, MBED_CONF_SD_SPI_CS);
DVLevine 0:69bfc1595ae5 22 #endif
DVLevine 0:69bfc1595ae5 23
DVLevine 0:69bfc1595ae5 24 #ifndef MBED_TEST_BLOCKDEVICE_DECL
DVLevine 0:69bfc1595ae5 25 #define MBED_TEST_BLOCKDEVICE_DECL MBED_TEST_BLOCKDEVICE bd
DVLevine 0:69bfc1595ae5 26 #endif
DVLevine 0:69bfc1595ae5 27
DVLevine 0:69bfc1595ae5 28 #ifndef MBED_TEST_FILES
DVLevine 0:69bfc1595ae5 29 #define MBED_TEST_FILES 4
DVLevine 0:69bfc1595ae5 30 #endif
DVLevine 0:69bfc1595ae5 31
DVLevine 0:69bfc1595ae5 32 #ifndef MBED_TEST_DIRS
DVLevine 0:69bfc1595ae5 33 #define MBED_TEST_DIRS 4
DVLevine 0:69bfc1595ae5 34 #endif
DVLevine 0:69bfc1595ae5 35
DVLevine 0:69bfc1595ae5 36 #ifndef MBED_TEST_BUFFER
DVLevine 0:69bfc1595ae5 37 #define MBED_TEST_BUFFER 8192
DVLevine 0:69bfc1595ae5 38 #endif
DVLevine 0:69bfc1595ae5 39
DVLevine 0:69bfc1595ae5 40 #ifndef MBED_TEST_TIMEOUT
DVLevine 0:69bfc1595ae5 41 #define MBED_TEST_TIMEOUT 120
DVLevine 0:69bfc1595ae5 42 #endif
DVLevine 0:69bfc1595ae5 43
DVLevine 0:69bfc1595ae5 44
DVLevine 0:69bfc1595ae5 45 // declarations
DVLevine 0:69bfc1595ae5 46 #define STRINGIZE(x) STRINGIZE2(x)
DVLevine 0:69bfc1595ae5 47 #define STRINGIZE2(x) #x
DVLevine 0:69bfc1595ae5 48 #define INCLUDE(x) STRINGIZE(x.h)
DVLevine 0:69bfc1595ae5 49
DVLevine 0:69bfc1595ae5 50 #include INCLUDE(MBED_TEST_FILESYSTEM)
DVLevine 0:69bfc1595ae5 51 #include INCLUDE(MBED_TEST_BLOCKDEVICE)
DVLevine 0:69bfc1595ae5 52
DVLevine 0:69bfc1595ae5 53 MBED_TEST_FILESYSTEM_DECL;
DVLevine 0:69bfc1595ae5 54 MBED_TEST_BLOCKDEVICE_DECL;
DVLevine 0:69bfc1595ae5 55
DVLevine 0:69bfc1595ae5 56 Dir dir[MBED_TEST_DIRS];
DVLevine 0:69bfc1595ae5 57 File file[MBED_TEST_FILES];
DVLevine 0:69bfc1595ae5 58 DIR *dd[MBED_TEST_DIRS];
DVLevine 0:69bfc1595ae5 59 FILE *fd[MBED_TEST_FILES];
DVLevine 0:69bfc1595ae5 60 struct dirent ent;
DVLevine 0:69bfc1595ae5 61 struct dirent *ed;
DVLevine 0:69bfc1595ae5 62 size_t size;
DVLevine 0:69bfc1595ae5 63 uint8_t buffer[MBED_TEST_BUFFER];
DVLevine 0:69bfc1595ae5 64 uint8_t rbuffer[MBED_TEST_BUFFER];
DVLevine 0:69bfc1595ae5 65 uint8_t wbuffer[MBED_TEST_BUFFER];
DVLevine 0:69bfc1595ae5 66
DVLevine 0:69bfc1595ae5 67
DVLevine 0:69bfc1595ae5 68 // tests
DVLevine 0:69bfc1595ae5 69
DVLevine 0:69bfc1595ae5 70 void test_seek_tests() {
DVLevine 0:69bfc1595ae5 71 int res = bd.init();
DVLevine 0:69bfc1595ae5 72 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 73
DVLevine 0:69bfc1595ae5 74 {
DVLevine 0:69bfc1595ae5 75 res = MBED_TEST_FILESYSTEM::format(&bd);
DVLevine 0:69bfc1595ae5 76 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 77 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 78 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 79 res = fs.mkdir("hello", 0777);
DVLevine 0:69bfc1595ae5 80 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 81 for (int i = 0; i < 132; i++) {
DVLevine 0:69bfc1595ae5 82 sprintf((char*)buffer, "hello/kitty%d", i);
DVLevine 0:69bfc1595ae5 83 res = file[0].open(&fs, (char*)buffer,
DVLevine 0:69bfc1595ae5 84 O_WRONLY | O_CREAT | O_APPEND);
DVLevine 0:69bfc1595ae5 85 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 86
DVLevine 0:69bfc1595ae5 87 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 88 memcpy(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 89 for (int j = 0; j < 132; j++) {
DVLevine 0:69bfc1595ae5 90 file[0].write(buffer, size);
DVLevine 0:69bfc1595ae5 91 }
DVLevine 0:69bfc1595ae5 92 res = file[0].close();
DVLevine 0:69bfc1595ae5 93 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 94 }
DVLevine 0:69bfc1595ae5 95 res = fs.unmount();
DVLevine 0:69bfc1595ae5 96 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 97 }
DVLevine 0:69bfc1595ae5 98
DVLevine 0:69bfc1595ae5 99 res = bd.deinit();
DVLevine 0:69bfc1595ae5 100 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 101 }
DVLevine 0:69bfc1595ae5 102
DVLevine 0:69bfc1595ae5 103 void test_simple_dir_seek() {
DVLevine 0:69bfc1595ae5 104 int res = bd.init();
DVLevine 0:69bfc1595ae5 105 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 106
DVLevine 0:69bfc1595ae5 107 {
DVLevine 0:69bfc1595ae5 108 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 109 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 110 res = dir[0].open(&fs, "hello");
DVLevine 0:69bfc1595ae5 111 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 112 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 113 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 114 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 115 res = strcmp(ent.d_name, ".");
DVLevine 0:69bfc1595ae5 116 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 117 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 118 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 119 res = strcmp(ent.d_name, "..");
DVLevine 0:69bfc1595ae5 120 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 121 #endif
DVLevine 0:69bfc1595ae5 122
DVLevine 0:69bfc1595ae5 123 off_t pos;
DVLevine 0:69bfc1595ae5 124 int i;
DVLevine 0:69bfc1595ae5 125 for (i = 0; i < 4; i++) {
DVLevine 0:69bfc1595ae5 126 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 127 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 128 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 129 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 130 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 131 pos = dir[0].tell();
DVLevine 0:69bfc1595ae5 132 }
DVLevine 0:69bfc1595ae5 133 res = pos >= 0;
DVLevine 0:69bfc1595ae5 134 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 135
DVLevine 0:69bfc1595ae5 136 dir[0].seek(pos);
DVLevine 0:69bfc1595ae5 137 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 138 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 139 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 140 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 141 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 142
DVLevine 0:69bfc1595ae5 143 dir[0].rewind();
DVLevine 0:69bfc1595ae5 144 sprintf((char*)buffer, "kitty%d", 0);
DVLevine 0:69bfc1595ae5 145 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 146 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 147 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 148 res = strcmp(ent.d_name, ".");
DVLevine 0:69bfc1595ae5 149 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 150 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 151 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 152 res = strcmp(ent.d_name, "..");
DVLevine 0:69bfc1595ae5 153 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 154 #endif
DVLevine 0:69bfc1595ae5 155 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 156 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 157 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 158 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 159
DVLevine 0:69bfc1595ae5 160 dir[0].seek(pos);
DVLevine 0:69bfc1595ae5 161 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 162 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 163 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 164 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 165 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 166 res = dir[0].close();
DVLevine 0:69bfc1595ae5 167 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 168 res = fs.unmount();
DVLevine 0:69bfc1595ae5 169 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 170 }
DVLevine 0:69bfc1595ae5 171
DVLevine 0:69bfc1595ae5 172 res = bd.deinit();
DVLevine 0:69bfc1595ae5 173 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 174 }
DVLevine 0:69bfc1595ae5 175
DVLevine 0:69bfc1595ae5 176 void test_large_dir_seek() {
DVLevine 0:69bfc1595ae5 177 int res = bd.init();
DVLevine 0:69bfc1595ae5 178 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 179
DVLevine 0:69bfc1595ae5 180 {
DVLevine 0:69bfc1595ae5 181 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 182 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 183 res = dir[0].open(&fs, "hello");
DVLevine 0:69bfc1595ae5 184 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 185 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 186 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 187 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 188 res = strcmp(ent.d_name, ".");
DVLevine 0:69bfc1595ae5 189 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 190 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 191 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 192 res = strcmp(ent.d_name, "..");
DVLevine 0:69bfc1595ae5 193 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 194 #endif
DVLevine 0:69bfc1595ae5 195
DVLevine 0:69bfc1595ae5 196 off_t pos;
DVLevine 0:69bfc1595ae5 197 int i;
DVLevine 0:69bfc1595ae5 198 for (i = 0; i < 128; i++) {
DVLevine 0:69bfc1595ae5 199 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 200 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 201 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 202 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 203 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 204 pos = dir[0].tell();
DVLevine 0:69bfc1595ae5 205 }
DVLevine 0:69bfc1595ae5 206 res = pos >= 0;
DVLevine 0:69bfc1595ae5 207 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 208
DVLevine 0:69bfc1595ae5 209 dir[0].seek(pos);
DVLevine 0:69bfc1595ae5 210 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 211 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 212 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 213 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 214 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 215
DVLevine 0:69bfc1595ae5 216 dir[0].rewind();
DVLevine 0:69bfc1595ae5 217 sprintf((char*)buffer, "kitty%d", 0);
DVLevine 0:69bfc1595ae5 218 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 219 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 220 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 221 res = strcmp(ent.d_name, ".");
DVLevine 0:69bfc1595ae5 222 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 223 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 224 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 225 res = strcmp(ent.d_name, "..");
DVLevine 0:69bfc1595ae5 226 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 227 #endif
DVLevine 0:69bfc1595ae5 228 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 229 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 230 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 231 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 232
DVLevine 0:69bfc1595ae5 233 dir[0].seek(pos);
DVLevine 0:69bfc1595ae5 234 sprintf((char*)buffer, "kitty%d", i);
DVLevine 0:69bfc1595ae5 235 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 236 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 237 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 238 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 239 res = dir[0].close();
DVLevine 0:69bfc1595ae5 240 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 241 res = fs.unmount();
DVLevine 0:69bfc1595ae5 242 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 243 }
DVLevine 0:69bfc1595ae5 244
DVLevine 0:69bfc1595ae5 245 res = bd.deinit();
DVLevine 0:69bfc1595ae5 246 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 247 }
DVLevine 0:69bfc1595ae5 248
DVLevine 0:69bfc1595ae5 249 void test_simple_file_seek() {
DVLevine 0:69bfc1595ae5 250 int res = bd.init();
DVLevine 0:69bfc1595ae5 251 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 252
DVLevine 0:69bfc1595ae5 253 {
DVLevine 0:69bfc1595ae5 254 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 255 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 256 res = file[0].open(&fs, "hello/kitty42", O_RDONLY);
DVLevine 0:69bfc1595ae5 257 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 258
DVLevine 0:69bfc1595ae5 259 off_t pos;
DVLevine 0:69bfc1595ae5 260 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 261 for (int i = 0; i < 4; i++) {
DVLevine 0:69bfc1595ae5 262 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 263 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 264 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 265 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 266 pos = file[0].tell();
DVLevine 0:69bfc1595ae5 267 }
DVLevine 0:69bfc1595ae5 268 res = pos >= 0;
DVLevine 0:69bfc1595ae5 269 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 270 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 271 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 272 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 273 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 274 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 275 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 276
DVLevine 0:69bfc1595ae5 277 file[0].rewind();
DVLevine 0:69bfc1595ae5 278 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 279 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 280 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 281 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 282 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 283 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 284 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 285 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 286 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 287 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 288 res = file[0].seek(-size, SEEK_CUR);
DVLevine 0:69bfc1595ae5 289 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 290 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 291 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 292 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 293 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 294 res = file[0].seek(-size, SEEK_END) >= 0;
DVLevine 0:69bfc1595ae5 295 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 296 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 297 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 298 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 299 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 300
DVLevine 0:69bfc1595ae5 301 size_t size = file[0].size();
DVLevine 0:69bfc1595ae5 302 res = file[0].seek(0, SEEK_CUR);
DVLevine 0:69bfc1595ae5 303 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 304 res = file[0].close();
DVLevine 0:69bfc1595ae5 305 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 306 res = fs.unmount();
DVLevine 0:69bfc1595ae5 307 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 308 }
DVLevine 0:69bfc1595ae5 309
DVLevine 0:69bfc1595ae5 310 res = bd.deinit();
DVLevine 0:69bfc1595ae5 311 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 312 }
DVLevine 0:69bfc1595ae5 313
DVLevine 0:69bfc1595ae5 314 void test_large_file_seek() {
DVLevine 0:69bfc1595ae5 315 int res = bd.init();
DVLevine 0:69bfc1595ae5 316 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 317
DVLevine 0:69bfc1595ae5 318 {
DVLevine 0:69bfc1595ae5 319 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 320 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 321 res = file[0].open(&fs, "hello/kitty42", O_RDONLY);
DVLevine 0:69bfc1595ae5 322 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 323
DVLevine 0:69bfc1595ae5 324 off_t pos;
DVLevine 0:69bfc1595ae5 325 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 326 for (int i = 0; i < 128; i++) {
DVLevine 0:69bfc1595ae5 327 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 328 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 329 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 330 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 331 pos = file[0].tell();
DVLevine 0:69bfc1595ae5 332 }
DVLevine 0:69bfc1595ae5 333 res = pos >= 0;
DVLevine 0:69bfc1595ae5 334 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 335 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 336 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 337 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 338 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 339 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 340 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 341
DVLevine 0:69bfc1595ae5 342 file[0].rewind();
DVLevine 0:69bfc1595ae5 343 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 344 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 345 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 346 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 347 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 348 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 349 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 350 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 351 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 352 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 353 res = file[0].seek(-size, SEEK_CUR);
DVLevine 0:69bfc1595ae5 354 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 355 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 356 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 357 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 358 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 359 res = file[0].seek(-size, SEEK_END) >= 0;
DVLevine 0:69bfc1595ae5 360 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 361 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 362 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 363 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 364 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 365
DVLevine 0:69bfc1595ae5 366 size_t size = file[0].size();
DVLevine 0:69bfc1595ae5 367 res = file[0].seek(0, SEEK_CUR);
DVLevine 0:69bfc1595ae5 368 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 369 res = file[0].close();
DVLevine 0:69bfc1595ae5 370 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 371 res = fs.unmount();
DVLevine 0:69bfc1595ae5 372 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 373 }
DVLevine 0:69bfc1595ae5 374
DVLevine 0:69bfc1595ae5 375 res = bd.deinit();
DVLevine 0:69bfc1595ae5 376 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 377 }
DVLevine 0:69bfc1595ae5 378
DVLevine 0:69bfc1595ae5 379 void test_simple_file_seek_and_write() {
DVLevine 0:69bfc1595ae5 380 int res = bd.init();
DVLevine 0:69bfc1595ae5 381 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 382
DVLevine 0:69bfc1595ae5 383 {
DVLevine 0:69bfc1595ae5 384 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 385 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 386 res = file[0].open(&fs, "hello/kitty42", O_RDWR);
DVLevine 0:69bfc1595ae5 387 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 388
DVLevine 0:69bfc1595ae5 389 off_t pos;
DVLevine 0:69bfc1595ae5 390 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 391 for (int i = 0; i < 4; i++) {
DVLevine 0:69bfc1595ae5 392 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 393 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 394 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 395 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 396 pos = file[0].tell();
DVLevine 0:69bfc1595ae5 397 }
DVLevine 0:69bfc1595ae5 398 res = pos >= 0;
DVLevine 0:69bfc1595ae5 399 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 400
DVLevine 0:69bfc1595ae5 401 memcpy(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 402 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 403 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 404 res = file[0].write(buffer, size);
DVLevine 0:69bfc1595ae5 405 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 406 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 407 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 408 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 409 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 410 res = memcmp(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 411 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 412
DVLevine 0:69bfc1595ae5 413 file[0].rewind();
DVLevine 0:69bfc1595ae5 414 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 415 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 416 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 417 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 418 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 419 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 420 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 421 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 422 res = memcmp(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 423 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 424 res = file[0].seek(-size, SEEK_END) >= 0;
DVLevine 0:69bfc1595ae5 425 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 426 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 427 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 428 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 429 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 430
DVLevine 0:69bfc1595ae5 431 size_t size = file[0].size();
DVLevine 0:69bfc1595ae5 432 res = file[0].seek(0, SEEK_CUR);
DVLevine 0:69bfc1595ae5 433 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 434 res = file[0].close();
DVLevine 0:69bfc1595ae5 435 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 436 res = fs.unmount();
DVLevine 0:69bfc1595ae5 437 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 438 }
DVLevine 0:69bfc1595ae5 439
DVLevine 0:69bfc1595ae5 440 res = bd.deinit();
DVLevine 0:69bfc1595ae5 441 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 442 }
DVLevine 0:69bfc1595ae5 443
DVLevine 0:69bfc1595ae5 444 void test_large_file_seek_and_write() {
DVLevine 0:69bfc1595ae5 445 int res = bd.init();
DVLevine 0:69bfc1595ae5 446 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 447
DVLevine 0:69bfc1595ae5 448 {
DVLevine 0:69bfc1595ae5 449 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 450 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 451 res = file[0].open(&fs, "hello/kitty42", O_RDWR);
DVLevine 0:69bfc1595ae5 452 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 453
DVLevine 0:69bfc1595ae5 454 off_t pos;
DVLevine 0:69bfc1595ae5 455 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 456 for (int i = 0; i < 128; i++) {
DVLevine 0:69bfc1595ae5 457 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 458 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 459 if (i != 4) {
DVLevine 0:69bfc1595ae5 460 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 461 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 462 }
DVLevine 0:69bfc1595ae5 463 pos = file[0].tell();
DVLevine 0:69bfc1595ae5 464 }
DVLevine 0:69bfc1595ae5 465 res = pos >= 0;
DVLevine 0:69bfc1595ae5 466 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 467
DVLevine 0:69bfc1595ae5 468 memcpy(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 469 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 470 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 471 res = file[0].write(buffer, size);
DVLevine 0:69bfc1595ae5 472 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 473 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 474 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 475 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 476 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 477 res = memcmp(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 478 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 479
DVLevine 0:69bfc1595ae5 480 file[0].rewind();
DVLevine 0:69bfc1595ae5 481 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 482 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 483 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 484 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 485 res = file[0].seek(pos, SEEK_SET);
DVLevine 0:69bfc1595ae5 486 TEST_ASSERT_EQUAL(pos, res);
DVLevine 0:69bfc1595ae5 487 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 488 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 489 res = memcmp(buffer, "doggodogdog", size);
DVLevine 0:69bfc1595ae5 490 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 491 res = file[0].seek(-size, SEEK_END) >= 0;
DVLevine 0:69bfc1595ae5 492 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 493 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 494 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 495 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 496 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 497
DVLevine 0:69bfc1595ae5 498 size_t size = file[0].size();
DVLevine 0:69bfc1595ae5 499 res = file[0].seek(0, SEEK_CUR);
DVLevine 0:69bfc1595ae5 500 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 501 res = file[0].close();
DVLevine 0:69bfc1595ae5 502 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 503 res = fs.unmount();
DVLevine 0:69bfc1595ae5 504 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 505 }
DVLevine 0:69bfc1595ae5 506
DVLevine 0:69bfc1595ae5 507 res = bd.deinit();
DVLevine 0:69bfc1595ae5 508 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 509 }
DVLevine 0:69bfc1595ae5 510
DVLevine 0:69bfc1595ae5 511 void test_boundary_seek_and_write() {
DVLevine 0:69bfc1595ae5 512 int res = bd.init();
DVLevine 0:69bfc1595ae5 513 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 514
DVLevine 0:69bfc1595ae5 515 {
DVLevine 0:69bfc1595ae5 516 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 517 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 518 res = file[0].open(&fs, "hello/kitty42", O_RDWR);
DVLevine 0:69bfc1595ae5 519 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 520
DVLevine 0:69bfc1595ae5 521 size = strlen("hedgehoghog");
DVLevine 0:69bfc1595ae5 522 const off_t offsets[] = {512, 1020, 513, 1021, 511, 1019};
DVLevine 0:69bfc1595ae5 523
DVLevine 0:69bfc1595ae5 524 for (int i = 0; i < sizeof(offsets) / sizeof(offsets[0]); i++) {
DVLevine 0:69bfc1595ae5 525 off_t off = offsets[i];
DVLevine 0:69bfc1595ae5 526 memcpy(buffer, "hedgehoghog", size);
DVLevine 0:69bfc1595ae5 527 res = file[0].seek(off, SEEK_SET);
DVLevine 0:69bfc1595ae5 528 TEST_ASSERT_EQUAL(off, res);
DVLevine 0:69bfc1595ae5 529 res = file[0].write(buffer, size);
DVLevine 0:69bfc1595ae5 530 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 531 res = file[0].seek(off, SEEK_SET);
DVLevine 0:69bfc1595ae5 532 TEST_ASSERT_EQUAL(off, res);
DVLevine 0:69bfc1595ae5 533 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 534 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 535 res = memcmp(buffer, "hedgehoghog", size);
DVLevine 0:69bfc1595ae5 536 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 537 res = file[0].seek(0, SEEK_SET);
DVLevine 0:69bfc1595ae5 538 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 539 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 540 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 541 res = memcmp(buffer, "kittycatcat", size);
DVLevine 0:69bfc1595ae5 542 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 543 res = file[0].sync();
DVLevine 0:69bfc1595ae5 544 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 545 }
DVLevine 0:69bfc1595ae5 546 res = file[0].close();
DVLevine 0:69bfc1595ae5 547 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 548 res = fs.unmount();
DVLevine 0:69bfc1595ae5 549 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 550 }
DVLevine 0:69bfc1595ae5 551
DVLevine 0:69bfc1595ae5 552 res = bd.deinit();
DVLevine 0:69bfc1595ae5 553 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 554 }
DVLevine 0:69bfc1595ae5 555
DVLevine 0:69bfc1595ae5 556 void test_out_of_bounds_seek() {
DVLevine 0:69bfc1595ae5 557 int res = bd.init();
DVLevine 0:69bfc1595ae5 558 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 559
DVLevine 0:69bfc1595ae5 560 {
DVLevine 0:69bfc1595ae5 561 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 562 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 563 res = file[0].open(&fs, "hello/kitty42", O_RDWR);
DVLevine 0:69bfc1595ae5 564 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 565
DVLevine 0:69bfc1595ae5 566 size = strlen("kittycatcat");
DVLevine 0:69bfc1595ae5 567 res = file[0].size();
DVLevine 0:69bfc1595ae5 568 TEST_ASSERT_EQUAL(132*size, res);
DVLevine 0:69bfc1595ae5 569 res = file[0].seek((132+4)*size,
DVLevine 0:69bfc1595ae5 570 SEEK_SET);
DVLevine 0:69bfc1595ae5 571 TEST_ASSERT_EQUAL((132+4)*size, res);
DVLevine 0:69bfc1595ae5 572 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 573 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 574
DVLevine 0:69bfc1595ae5 575 memcpy(buffer, "porcupineee", size);
DVLevine 0:69bfc1595ae5 576 res = file[0].write(buffer, size);
DVLevine 0:69bfc1595ae5 577 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 578 res = file[0].seek((132+4)*size,
DVLevine 0:69bfc1595ae5 579 SEEK_SET);
DVLevine 0:69bfc1595ae5 580 TEST_ASSERT_EQUAL((132+4)*size, res);
DVLevine 0:69bfc1595ae5 581 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 582 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 583 res = memcmp(buffer, "porcupineee", size);
DVLevine 0:69bfc1595ae5 584 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 585 res = file[0].seek(132*size,
DVLevine 0:69bfc1595ae5 586 SEEK_SET);
DVLevine 0:69bfc1595ae5 587 TEST_ASSERT_EQUAL(132*size, res);
DVLevine 0:69bfc1595ae5 588 res = file[0].read(buffer, size);
DVLevine 0:69bfc1595ae5 589 TEST_ASSERT_EQUAL(size, res);
DVLevine 0:69bfc1595ae5 590 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 591 // FatFs does not guarantee empty expanded buffer
DVLevine 0:69bfc1595ae5 592 res = memcmp(buffer, "\0\0\0\0\0\0\0\0\0\0\0", size);
DVLevine 0:69bfc1595ae5 593 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 594 #endif
DVLevine 0:69bfc1595ae5 595 res = file[0].close();
DVLevine 0:69bfc1595ae5 596 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 597 res = fs.unmount();
DVLevine 0:69bfc1595ae5 598 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 599 }
DVLevine 0:69bfc1595ae5 600
DVLevine 0:69bfc1595ae5 601 res = bd.deinit();
DVLevine 0:69bfc1595ae5 602 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 603 }
DVLevine 0:69bfc1595ae5 604
DVLevine 0:69bfc1595ae5 605
DVLevine 0:69bfc1595ae5 606
DVLevine 0:69bfc1595ae5 607 // test setup
DVLevine 0:69bfc1595ae5 608 utest::v1::status_t test_setup(const size_t number_of_cases) {
DVLevine 0:69bfc1595ae5 609 GREENTEA_SETUP(MBED_TEST_TIMEOUT, "default_auto");
DVLevine 0:69bfc1595ae5 610 return verbose_test_setup_handler(number_of_cases);
DVLevine 0:69bfc1595ae5 611 }
DVLevine 0:69bfc1595ae5 612
DVLevine 0:69bfc1595ae5 613 Case cases[] = {
DVLevine 0:69bfc1595ae5 614 Case("Seek tests", test_seek_tests),
DVLevine 0:69bfc1595ae5 615 Case("Simple dir seek", test_simple_dir_seek),
DVLevine 0:69bfc1595ae5 616 Case("Large dir seek", test_large_dir_seek),
DVLevine 0:69bfc1595ae5 617 Case("Simple file seek", test_simple_file_seek),
DVLevine 0:69bfc1595ae5 618 Case("Large file seek", test_large_file_seek),
DVLevine 0:69bfc1595ae5 619 Case("Simple file seek and write", test_simple_file_seek_and_write),
DVLevine 0:69bfc1595ae5 620 Case("Large file seek and write", test_large_file_seek_and_write),
DVLevine 0:69bfc1595ae5 621 Case("Boundary seek and write", test_boundary_seek_and_write),
DVLevine 0:69bfc1595ae5 622 Case("Out-of-bounds seek", test_out_of_bounds_seek),
DVLevine 0:69bfc1595ae5 623 };
DVLevine 0:69bfc1595ae5 624
DVLevine 0:69bfc1595ae5 625 Specification specification(test_setup, cases);
DVLevine 0:69bfc1595ae5 626
DVLevine 0:69bfc1595ae5 627 int main() {
DVLevine 0:69bfc1595ae5 628 return !Harness::run(specification);
DVLevine 0:69bfc1595ae5 629 }