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_directory_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 }
DVLevine 0:69bfc1595ae5 78
DVLevine 0:69bfc1595ae5 79 res = bd.deinit();
DVLevine 0:69bfc1595ae5 80 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 81 }
DVLevine 0:69bfc1595ae5 82
DVLevine 0:69bfc1595ae5 83 void test_root_directory() {
DVLevine 0:69bfc1595ae5 84 int res = bd.init();
DVLevine 0:69bfc1595ae5 85 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 86
DVLevine 0:69bfc1595ae5 87 {
DVLevine 0:69bfc1595ae5 88 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 89 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 90 res = dir[0].open(&fs, "/");
DVLevine 0:69bfc1595ae5 91 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 92 res = dir[0].close();
DVLevine 0:69bfc1595ae5 93 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 94 res = fs.unmount();
DVLevine 0:69bfc1595ae5 95 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 96 }
DVLevine 0:69bfc1595ae5 97
DVLevine 0:69bfc1595ae5 98 res = bd.deinit();
DVLevine 0:69bfc1595ae5 99 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 100 }
DVLevine 0:69bfc1595ae5 101
DVLevine 0:69bfc1595ae5 102 void test_directory_creation() {
DVLevine 0:69bfc1595ae5 103 int res = bd.init();
DVLevine 0:69bfc1595ae5 104 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 105
DVLevine 0:69bfc1595ae5 106 {
DVLevine 0:69bfc1595ae5 107 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 108 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 109 res = fs.mkdir("potato", 0777);
DVLevine 0:69bfc1595ae5 110 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 111 res = fs.unmount();
DVLevine 0:69bfc1595ae5 112 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 113 }
DVLevine 0:69bfc1595ae5 114
DVLevine 0:69bfc1595ae5 115 res = bd.deinit();
DVLevine 0:69bfc1595ae5 116 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 117 }
DVLevine 0:69bfc1595ae5 118
DVLevine 0:69bfc1595ae5 119 void test_file_creation() {
DVLevine 0:69bfc1595ae5 120 int res = bd.init();
DVLevine 0:69bfc1595ae5 121 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 122
DVLevine 0:69bfc1595ae5 123 {
DVLevine 0:69bfc1595ae5 124 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 125 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 126 res = file[0].open(&fs, "burito", O_CREAT | O_WRONLY);
DVLevine 0:69bfc1595ae5 127 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 128 res = file[0].close();
DVLevine 0:69bfc1595ae5 129 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 130 res = fs.unmount();
DVLevine 0:69bfc1595ae5 131 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 132 }
DVLevine 0:69bfc1595ae5 133
DVLevine 0:69bfc1595ae5 134 res = bd.deinit();
DVLevine 0:69bfc1595ae5 135 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 136 }
DVLevine 0:69bfc1595ae5 137
DVLevine 0:69bfc1595ae5 138 void dir_file_check(char *list[], uint32_t elements) {
DVLevine 0:69bfc1595ae5 139 int res;
DVLevine 0:69bfc1595ae5 140 while(1) {
DVLevine 0:69bfc1595ae5 141 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 142 if (0 == res) {
DVLevine 0:69bfc1595ae5 143 break;
DVLevine 0:69bfc1595ae5 144 }
DVLevine 0:69bfc1595ae5 145 for (int i = 0; i < elements ; i++) {
DVLevine 0:69bfc1595ae5 146 res = strcmp(ent.d_name, list[i]);
DVLevine 0:69bfc1595ae5 147 if (0 == res) {
DVLevine 0:69bfc1595ae5 148 res = ent.d_type;
DVLevine 0:69bfc1595ae5 149 if ((DT_DIR != res) && (DT_REG != res)) {
DVLevine 0:69bfc1595ae5 150 TEST_ASSERT(1);
DVLevine 0:69bfc1595ae5 151 }
DVLevine 0:69bfc1595ae5 152 break;
DVLevine 0:69bfc1595ae5 153 }
DVLevine 0:69bfc1595ae5 154 else if( i == elements) {
DVLevine 0:69bfc1595ae5 155 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 156 }
DVLevine 0:69bfc1595ae5 157 }
DVLevine 0:69bfc1595ae5 158 }
DVLevine 0:69bfc1595ae5 159 }
DVLevine 0:69bfc1595ae5 160
DVLevine 0:69bfc1595ae5 161 void test_directory_iteration() {
DVLevine 0:69bfc1595ae5 162 int res = bd.init();
DVLevine 0:69bfc1595ae5 163 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 164
DVLevine 0:69bfc1595ae5 165 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 166 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 167 res = dir[0].open(&fs, "/");
DVLevine 0:69bfc1595ae5 168 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 169 char *dir_list[] = {"potato", "burito", ".", ".."};
DVLevine 0:69bfc1595ae5 170
DVLevine 0:69bfc1595ae5 171 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 172
DVLevine 0:69bfc1595ae5 173 res = dir[0].close();
DVLevine 0:69bfc1595ae5 174 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 175 res = fs.unmount();
DVLevine 0:69bfc1595ae5 176 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 177 res = bd.deinit();
DVLevine 0:69bfc1595ae5 178 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 179 }
DVLevine 0:69bfc1595ae5 180
DVLevine 0:69bfc1595ae5 181 void test_directory_failures() {
DVLevine 0:69bfc1595ae5 182 int res = bd.init();
DVLevine 0:69bfc1595ae5 183 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 184
DVLevine 0:69bfc1595ae5 185 {
DVLevine 0:69bfc1595ae5 186 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 187 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 188 res = fs.mkdir("potato", 0777);
DVLevine 0:69bfc1595ae5 189 TEST_ASSERT_EQUAL(-EEXIST, res);
DVLevine 0:69bfc1595ae5 190 res = dir[0].open(&fs, "tomato");
DVLevine 0:69bfc1595ae5 191 TEST_ASSERT_EQUAL(-ENOENT, res);
DVLevine 0:69bfc1595ae5 192 res = dir[0].open(&fs, "burito");
DVLevine 0:69bfc1595ae5 193 TEST_ASSERT_NOT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 194 res = file[0].open(&fs, "tomato", O_RDONLY);
DVLevine 0:69bfc1595ae5 195 TEST_ASSERT_EQUAL(-ENOENT, res);
DVLevine 0:69bfc1595ae5 196 res = file[0].open(&fs, "potato", O_RDONLY);
DVLevine 0:69bfc1595ae5 197 TEST_ASSERT_NOT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 198 res = fs.unmount();
DVLevine 0:69bfc1595ae5 199 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 200 }
DVLevine 0:69bfc1595ae5 201
DVLevine 0:69bfc1595ae5 202 res = bd.deinit();
DVLevine 0:69bfc1595ae5 203 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 204 }
DVLevine 0:69bfc1595ae5 205
DVLevine 0:69bfc1595ae5 206 void test_nested_directories() {
DVLevine 0:69bfc1595ae5 207 int res = bd.init();
DVLevine 0:69bfc1595ae5 208 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 209
DVLevine 0:69bfc1595ae5 210 {
DVLevine 0:69bfc1595ae5 211 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 212 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 213 res = fs.mkdir("potato/baked", 0777);
DVLevine 0:69bfc1595ae5 214 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 215 res = fs.mkdir("potato/sweet", 0777);
DVLevine 0:69bfc1595ae5 216 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 217 res = fs.mkdir("potato/fried", 0777);
DVLevine 0:69bfc1595ae5 218 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 219 res = fs.unmount();
DVLevine 0:69bfc1595ae5 220 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 221 }
DVLevine 0:69bfc1595ae5 222
DVLevine 0:69bfc1595ae5 223 {
DVLevine 0:69bfc1595ae5 224 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 225 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 226 res = dir[0].open(&fs, "/");
DVLevine 0:69bfc1595ae5 227 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 228 char *dir_list[] = {"potato", "baked", "sweet", "fried", ".", ".."};
DVLevine 0:69bfc1595ae5 229 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 230 res = dir[0].close();
DVLevine 0:69bfc1595ae5 231 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 232 res = fs.unmount();
DVLevine 0:69bfc1595ae5 233 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 234 }
DVLevine 0:69bfc1595ae5 235
DVLevine 0:69bfc1595ae5 236 res = bd.deinit();
DVLevine 0:69bfc1595ae5 237 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 238 }
DVLevine 0:69bfc1595ae5 239
DVLevine 0:69bfc1595ae5 240 void test_multi_block_directory() {
DVLevine 0:69bfc1595ae5 241 int res = bd.init();
DVLevine 0:69bfc1595ae5 242 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 243
DVLevine 0:69bfc1595ae5 244 {
DVLevine 0:69bfc1595ae5 245 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 246 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 247 res = fs.mkdir("cactus", 0777);
DVLevine 0:69bfc1595ae5 248 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 249 for (int i = 0; i < 128; i++) {
DVLevine 0:69bfc1595ae5 250 sprintf((char*)buffer, "cactus/test%d", i);
DVLevine 0:69bfc1595ae5 251 res = fs.mkdir((char*)buffer, 0777);
DVLevine 0:69bfc1595ae5 252 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 253 }
DVLevine 0:69bfc1595ae5 254 res = fs.unmount();
DVLevine 0:69bfc1595ae5 255 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 256 }
DVLevine 0:69bfc1595ae5 257
DVLevine 0:69bfc1595ae5 258 {
DVLevine 0:69bfc1595ae5 259 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 260 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 261 res = dir[0].open(&fs, "cactus");
DVLevine 0:69bfc1595ae5 262 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 263
DVLevine 0:69bfc1595ae5 264 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 265 char *dir_list[] = {".", ".."};
DVLevine 0:69bfc1595ae5 266 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 267 #endif
DVLevine 0:69bfc1595ae5 268
DVLevine 0:69bfc1595ae5 269 for (int i = 0; i < 128; i++) {
DVLevine 0:69bfc1595ae5 270 sprintf((char*)buffer, "test%d", i);
DVLevine 0:69bfc1595ae5 271 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 272 TEST_ASSERT_EQUAL(1, res);
DVLevine 0:69bfc1595ae5 273 res = strcmp(ent.d_name, (char*)buffer);
DVLevine 0:69bfc1595ae5 274 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 275 }
DVLevine 0:69bfc1595ae5 276 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 277 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 278 res = dir[0].close();
DVLevine 0:69bfc1595ae5 279 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 280 res = fs.unmount();
DVLevine 0:69bfc1595ae5 281 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 282 }
DVLevine 0:69bfc1595ae5 283
DVLevine 0:69bfc1595ae5 284 res = bd.deinit();
DVLevine 0:69bfc1595ae5 285 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 286 }
DVLevine 0:69bfc1595ae5 287
DVLevine 0:69bfc1595ae5 288 void test_directory_remove() {
DVLevine 0:69bfc1595ae5 289 int res = bd.init();
DVLevine 0:69bfc1595ae5 290 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 291
DVLevine 0:69bfc1595ae5 292 {
DVLevine 0:69bfc1595ae5 293 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 294 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 295 res = fs.remove("potato");
DVLevine 0:69bfc1595ae5 296 TEST_ASSERT_NOT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 297 res = fs.remove("potato/sweet");
DVLevine 0:69bfc1595ae5 298 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 299 res = fs.remove("potato/baked");
DVLevine 0:69bfc1595ae5 300 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 301 res = fs.remove("potato/fried");
DVLevine 0:69bfc1595ae5 302 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 303 res = dir[0].open(&fs, "potato");
DVLevine 0:69bfc1595ae5 304 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 305
DVLevine 0:69bfc1595ae5 306 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
DVLevine 0:69bfc1595ae5 307 char *dir_list[] = {".", ".."};
DVLevine 0:69bfc1595ae5 308 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 309 #endif
DVLevine 0:69bfc1595ae5 310
DVLevine 0:69bfc1595ae5 311 res = dir[0].read(&ent);
DVLevine 0:69bfc1595ae5 312 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 313 res = dir[0].close();
DVLevine 0:69bfc1595ae5 314 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 315 res = fs.remove("potato");
DVLevine 0:69bfc1595ae5 316 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 317 res = fs.unmount();
DVLevine 0:69bfc1595ae5 318 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 319 }
DVLevine 0:69bfc1595ae5 320
DVLevine 0:69bfc1595ae5 321 {
DVLevine 0:69bfc1595ae5 322 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 323 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 324 res = dir[0].open(&fs, "/");
DVLevine 0:69bfc1595ae5 325 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 326 char *dir_list[] = {"burito", "cactus", ".", ".."};
DVLevine 0:69bfc1595ae5 327 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 328 res = dir[0].close();
DVLevine 0:69bfc1595ae5 329 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 330 res = fs.unmount();
DVLevine 0:69bfc1595ae5 331 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 332 }
DVLevine 0:69bfc1595ae5 333
DVLevine 0:69bfc1595ae5 334 res = bd.deinit();
DVLevine 0:69bfc1595ae5 335 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 336 }
DVLevine 0:69bfc1595ae5 337
DVLevine 0:69bfc1595ae5 338 void test_directory_rename() {
DVLevine 0:69bfc1595ae5 339 int res = bd.init();
DVLevine 0:69bfc1595ae5 340 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 341
DVLevine 0:69bfc1595ae5 342 {
DVLevine 0:69bfc1595ae5 343 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 344 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 345 res = fs.mkdir("coldpotato", 0777);
DVLevine 0:69bfc1595ae5 346 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 347 res = fs.mkdir("coldpotato/baked", 0777);
DVLevine 0:69bfc1595ae5 348 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 349 res = fs.mkdir("coldpotato/sweet", 0777);
DVLevine 0:69bfc1595ae5 350 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 351 res = fs.mkdir("coldpotato/fried", 0777);
DVLevine 0:69bfc1595ae5 352 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 353 res = fs.unmount();
DVLevine 0:69bfc1595ae5 354 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 355 }
DVLevine 0:69bfc1595ae5 356
DVLevine 0:69bfc1595ae5 357 {
DVLevine 0:69bfc1595ae5 358 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 359 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 360 res = fs.rename("coldpotato", "hotpotato");
DVLevine 0:69bfc1595ae5 361 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 362 res = fs.unmount();
DVLevine 0:69bfc1595ae5 363 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 364 }
DVLevine 0:69bfc1595ae5 365
DVLevine 0:69bfc1595ae5 366 {
DVLevine 0:69bfc1595ae5 367 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 368 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 369 res = dir[0].open(&fs, "hotpotato");
DVLevine 0:69bfc1595ae5 370 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 371 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
DVLevine 0:69bfc1595ae5 372 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 373 res = dir[0].close();
DVLevine 0:69bfc1595ae5 374 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 375 res = fs.unmount();
DVLevine 0:69bfc1595ae5 376 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 377 }
DVLevine 0:69bfc1595ae5 378
DVLevine 0:69bfc1595ae5 379 {
DVLevine 0:69bfc1595ae5 380 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 381 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 382 res = fs.mkdir("warmpotato", 0777);
DVLevine 0:69bfc1595ae5 383 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 384 res = fs.mkdir("warmpotato/mushy", 0777);
DVLevine 0:69bfc1595ae5 385 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 386 res = fs.rename("hotpotato", "warmpotato");
DVLevine 0:69bfc1595ae5 387 TEST_ASSERT_NOT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 388 res = fs.remove("warmpotato/mushy");
DVLevine 0:69bfc1595ae5 389 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 390 res = fs.remove("warmpotato");
DVLevine 0:69bfc1595ae5 391 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 392 res = fs.rename("hotpotato", "warmpotato");
DVLevine 0:69bfc1595ae5 393 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 394 res = fs.unmount();
DVLevine 0:69bfc1595ae5 395 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 396 }
DVLevine 0:69bfc1595ae5 397
DVLevine 0:69bfc1595ae5 398 {
DVLevine 0:69bfc1595ae5 399 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 400 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 401 res = dir[0].open(&fs, "warmpotato");
DVLevine 0:69bfc1595ae5 402 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 403 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
DVLevine 0:69bfc1595ae5 404 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 405 res = dir[0].close();
DVLevine 0:69bfc1595ae5 406 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 407 res = fs.unmount();
DVLevine 0:69bfc1595ae5 408 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 409 }
DVLevine 0:69bfc1595ae5 410
DVLevine 0:69bfc1595ae5 411 {
DVLevine 0:69bfc1595ae5 412 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 413 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 414 res = fs.mkdir("coldpotato", 0777);
DVLevine 0:69bfc1595ae5 415 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 416 res = fs.rename("warmpotato/baked", "coldpotato/baked");
DVLevine 0:69bfc1595ae5 417 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 418 res = fs.rename("warmpotato/sweet", "coldpotato/sweet");
DVLevine 0:69bfc1595ae5 419 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 420 res = fs.rename("warmpotato/fried", "coldpotato/fried");
DVLevine 0:69bfc1595ae5 421 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 422 res = fs.remove("coldpotato");
DVLevine 0:69bfc1595ae5 423 TEST_ASSERT_NOT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 424 res = fs.remove("warmpotato");
DVLevine 0:69bfc1595ae5 425 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 426 res = fs.unmount();
DVLevine 0:69bfc1595ae5 427 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 428 }
DVLevine 0:69bfc1595ae5 429
DVLevine 0:69bfc1595ae5 430 {
DVLevine 0:69bfc1595ae5 431 res = fs.mount(&bd);
DVLevine 0:69bfc1595ae5 432 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 433 res = dir[0].open(&fs, "coldpotato");
DVLevine 0:69bfc1595ae5 434 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 435 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
DVLevine 0:69bfc1595ae5 436 dir_file_check(dir_list, (sizeof(dir_list)/sizeof(dir_list[0])));
DVLevine 0:69bfc1595ae5 437 res = dir[0].close();
DVLevine 0:69bfc1595ae5 438 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 439 res = fs.unmount();
DVLevine 0:69bfc1595ae5 440 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 441 }
DVLevine 0:69bfc1595ae5 442
DVLevine 0:69bfc1595ae5 443 res = bd.deinit();
DVLevine 0:69bfc1595ae5 444 TEST_ASSERT_EQUAL(0, res);
DVLevine 0:69bfc1595ae5 445 }
DVLevine 0:69bfc1595ae5 446
DVLevine 0:69bfc1595ae5 447
DVLevine 0:69bfc1595ae5 448
DVLevine 0:69bfc1595ae5 449 // test setup
DVLevine 0:69bfc1595ae5 450 utest::v1::status_t test_setup(const size_t number_of_cases) {
DVLevine 0:69bfc1595ae5 451 GREENTEA_SETUP(MBED_TEST_TIMEOUT, "default_auto");
DVLevine 0:69bfc1595ae5 452 return verbose_test_setup_handler(number_of_cases);
DVLevine 0:69bfc1595ae5 453 }
DVLevine 0:69bfc1595ae5 454
DVLevine 0:69bfc1595ae5 455 Case cases[] = {
DVLevine 0:69bfc1595ae5 456 Case("Directory tests", test_directory_tests),
DVLevine 0:69bfc1595ae5 457 Case("Root directory", test_root_directory),
DVLevine 0:69bfc1595ae5 458 Case("Directory creation", test_directory_creation),
DVLevine 0:69bfc1595ae5 459 Case("File creation", test_file_creation),
DVLevine 0:69bfc1595ae5 460 Case("Directory iteration", test_directory_iteration),
DVLevine 0:69bfc1595ae5 461 Case("Directory failures", test_directory_failures),
DVLevine 0:69bfc1595ae5 462 Case("Nested directories", test_nested_directories),
DVLevine 0:69bfc1595ae5 463 Case("Multi-block directory", test_multi_block_directory),
DVLevine 0:69bfc1595ae5 464 Case("Directory remove", test_directory_remove),
DVLevine 0:69bfc1595ae5 465 Case("Directory rename", test_directory_rename),
DVLevine 0:69bfc1595ae5 466 };
DVLevine 0:69bfc1595ae5 467
DVLevine 0:69bfc1595ae5 468 Specification specification(test_setup, cases);
DVLevine 0:69bfc1595ae5 469
DVLevine 0:69bfc1595ae5 470 int main() {
DVLevine 0:69bfc1595ae5 471 return !Harness::run(specification);
DVLevine 0:69bfc1595ae5 472 }