RTC auf true

Committer:
kevman
Date:
Wed Mar 13 11:03:24 2019 +0000
Revision:
2:7aab896b1a3b
2019-03-13

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kevman 2:7aab896b1a3b 1 /* mbed Microcontroller Library
kevman 2:7aab896b1a3b 2 * Copyright (c) 2016 ARM Limited
kevman 2:7aab896b1a3b 3 *
kevman 2:7aab896b1a3b 4 * Licensed under the Apache License, Version 2.0 (the "License");
kevman 2:7aab896b1a3b 5 * you may not use this file except in compliance with the License.
kevman 2:7aab896b1a3b 6 * You may obtain a copy of the License at
kevman 2:7aab896b1a3b 7 *
kevman 2:7aab896b1a3b 8 * http://www.apache.org/licenses/LICENSE-2.0
kevman 2:7aab896b1a3b 9 *
kevman 2:7aab896b1a3b 10 * Unless required by applicable law or agreed to in writing, software
kevman 2:7aab896b1a3b 11 * distributed under the License is distributed on an "AS IS" BASIS,
kevman 2:7aab896b1a3b 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
kevman 2:7aab896b1a3b 13 * See the License for the specific language governing permissions and
kevman 2:7aab896b1a3b 14 * limitations under the License.
kevman 2:7aab896b1a3b 15 */
kevman 2:7aab896b1a3b 16
kevman 2:7aab896b1a3b 17 #include "mbed.h"
kevman 2:7aab896b1a3b 18 #include "greentea-client/test_env.h"
kevman 2:7aab896b1a3b 19 #include "unity.h"
kevman 2:7aab896b1a3b 20 #include "utest.h"
kevman 2:7aab896b1a3b 21 #include <stdlib.h>
kevman 2:7aab896b1a3b 22 #include <errno.h>
kevman 2:7aab896b1a3b 23
kevman 2:7aab896b1a3b 24 using namespace utest::v1;
kevman 2:7aab896b1a3b 25
kevman 2:7aab896b1a3b 26 // test configuration
kevman 2:7aab896b1a3b 27 #ifndef MBED_TEST_FILESYSTEM
kevman 2:7aab896b1a3b 28 #define MBED_TEST_FILESYSTEM FATFileSystem
kevman 2:7aab896b1a3b 29 #endif
kevman 2:7aab896b1a3b 30
kevman 2:7aab896b1a3b 31 #ifndef MBED_TEST_FILESYSTEM_DECL
kevman 2:7aab896b1a3b 32 #define MBED_TEST_FILESYSTEM_DECL MBED_TEST_FILESYSTEM fs("fs")
kevman 2:7aab896b1a3b 33 #endif
kevman 2:7aab896b1a3b 34
kevman 2:7aab896b1a3b 35 #ifndef MBED_TEST_BLOCKDEVICE
kevman 2:7aab896b1a3b 36 #define MBED_TEST_BLOCKDEVICE SDBlockDevice
kevman 2:7aab896b1a3b 37 #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);
kevman 2:7aab896b1a3b 38 #endif
kevman 2:7aab896b1a3b 39
kevman 2:7aab896b1a3b 40 #ifndef MBED_TEST_BLOCKDEVICE_DECL
kevman 2:7aab896b1a3b 41 #define MBED_TEST_BLOCKDEVICE_DECL MBED_TEST_BLOCKDEVICE bd
kevman 2:7aab896b1a3b 42 #endif
kevman 2:7aab896b1a3b 43
kevman 2:7aab896b1a3b 44 #ifndef MBED_TEST_FILES
kevman 2:7aab896b1a3b 45 #define MBED_TEST_FILES 4
kevman 2:7aab896b1a3b 46 #endif
kevman 2:7aab896b1a3b 47
kevman 2:7aab896b1a3b 48 #ifndef MBED_TEST_DIRS
kevman 2:7aab896b1a3b 49 #define MBED_TEST_DIRS 4
kevman 2:7aab896b1a3b 50 #endif
kevman 2:7aab896b1a3b 51
kevman 2:7aab896b1a3b 52 #ifndef MBED_TEST_BUFFER
kevman 2:7aab896b1a3b 53 #define MBED_TEST_BUFFER 8192
kevman 2:7aab896b1a3b 54 #endif
kevman 2:7aab896b1a3b 55
kevman 2:7aab896b1a3b 56 #ifndef MBED_TEST_TIMEOUT
kevman 2:7aab896b1a3b 57 #define MBED_TEST_TIMEOUT 120
kevman 2:7aab896b1a3b 58 #endif
kevman 2:7aab896b1a3b 59
kevman 2:7aab896b1a3b 60
kevman 2:7aab896b1a3b 61 // declarations
kevman 2:7aab896b1a3b 62 #define STRINGIZE(x) STRINGIZE2(x)
kevman 2:7aab896b1a3b 63 #define STRINGIZE2(x) #x
kevman 2:7aab896b1a3b 64 #define INCLUDE(x) STRINGIZE(x.h)
kevman 2:7aab896b1a3b 65
kevman 2:7aab896b1a3b 66 #include INCLUDE(MBED_TEST_FILESYSTEM)
kevman 2:7aab896b1a3b 67 #include INCLUDE(MBED_TEST_BLOCKDEVICE)
kevman 2:7aab896b1a3b 68
kevman 2:7aab896b1a3b 69 MBED_TEST_FILESYSTEM_DECL;
kevman 2:7aab896b1a3b 70 MBED_TEST_BLOCKDEVICE_DECL;
kevman 2:7aab896b1a3b 71
kevman 2:7aab896b1a3b 72 Dir dir[MBED_TEST_DIRS];
kevman 2:7aab896b1a3b 73 File file[MBED_TEST_FILES];
kevman 2:7aab896b1a3b 74 DIR *dd[MBED_TEST_DIRS];
kevman 2:7aab896b1a3b 75 FILE *fd[MBED_TEST_FILES];
kevman 2:7aab896b1a3b 76 struct dirent ent;
kevman 2:7aab896b1a3b 77 struct dirent *ed;
kevman 2:7aab896b1a3b 78 size_t size;
kevman 2:7aab896b1a3b 79 uint8_t buffer[MBED_TEST_BUFFER];
kevman 2:7aab896b1a3b 80 uint8_t rbuffer[MBED_TEST_BUFFER];
kevman 2:7aab896b1a3b 81 uint8_t wbuffer[MBED_TEST_BUFFER];
kevman 2:7aab896b1a3b 82
kevman 2:7aab896b1a3b 83
kevman 2:7aab896b1a3b 84 // tests
kevman 2:7aab896b1a3b 85
kevman 2:7aab896b1a3b 86 void test_directory_tests()
kevman 2:7aab896b1a3b 87 {
kevman 2:7aab896b1a3b 88 int res = bd.init();
kevman 2:7aab896b1a3b 89 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 90
kevman 2:7aab896b1a3b 91 {
kevman 2:7aab896b1a3b 92 res = MBED_TEST_FILESYSTEM::format(&bd);
kevman 2:7aab896b1a3b 93 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 94 }
kevman 2:7aab896b1a3b 95
kevman 2:7aab896b1a3b 96 res = bd.deinit();
kevman 2:7aab896b1a3b 97 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 98 }
kevman 2:7aab896b1a3b 99
kevman 2:7aab896b1a3b 100 void test_root_directory()
kevman 2:7aab896b1a3b 101 {
kevman 2:7aab896b1a3b 102 int res = bd.init();
kevman 2:7aab896b1a3b 103 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 104
kevman 2:7aab896b1a3b 105 {
kevman 2:7aab896b1a3b 106 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 107 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 108 res = dir[0].open(&fs, "/");
kevman 2:7aab896b1a3b 109 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 110 res = dir[0].close();
kevman 2:7aab896b1a3b 111 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 112 res = fs.unmount();
kevman 2:7aab896b1a3b 113 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 114 }
kevman 2:7aab896b1a3b 115
kevman 2:7aab896b1a3b 116 res = bd.deinit();
kevman 2:7aab896b1a3b 117 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 118 }
kevman 2:7aab896b1a3b 119
kevman 2:7aab896b1a3b 120 void test_directory_creation()
kevman 2:7aab896b1a3b 121 {
kevman 2:7aab896b1a3b 122 int res = bd.init();
kevman 2:7aab896b1a3b 123 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 124
kevman 2:7aab896b1a3b 125 {
kevman 2:7aab896b1a3b 126 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 127 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 128 res = fs.mkdir("potato", 0777);
kevman 2:7aab896b1a3b 129 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 130 res = fs.unmount();
kevman 2:7aab896b1a3b 131 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 132 }
kevman 2:7aab896b1a3b 133
kevman 2:7aab896b1a3b 134 res = bd.deinit();
kevman 2:7aab896b1a3b 135 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 136 }
kevman 2:7aab896b1a3b 137
kevman 2:7aab896b1a3b 138 void test_file_creation()
kevman 2:7aab896b1a3b 139 {
kevman 2:7aab896b1a3b 140 int res = bd.init();
kevman 2:7aab896b1a3b 141 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 142
kevman 2:7aab896b1a3b 143 {
kevman 2:7aab896b1a3b 144 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 145 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 146 res = file[0].open(&fs, "burito", O_CREAT | O_WRONLY);
kevman 2:7aab896b1a3b 147 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 148 res = file[0].close();
kevman 2:7aab896b1a3b 149 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 150 res = fs.unmount();
kevman 2:7aab896b1a3b 151 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 152 }
kevman 2:7aab896b1a3b 153
kevman 2:7aab896b1a3b 154 res = bd.deinit();
kevman 2:7aab896b1a3b 155 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 156 }
kevman 2:7aab896b1a3b 157
kevman 2:7aab896b1a3b 158 void dir_file_check(char *list[], uint32_t elements)
kevman 2:7aab896b1a3b 159 {
kevman 2:7aab896b1a3b 160 int res;
kevman 2:7aab896b1a3b 161 while (1) {
kevman 2:7aab896b1a3b 162 res = dir[0].read(&ent);
kevman 2:7aab896b1a3b 163 if (0 == res) {
kevman 2:7aab896b1a3b 164 break;
kevman 2:7aab896b1a3b 165 }
kevman 2:7aab896b1a3b 166 for (int i = 0; i < elements ; i++) {
kevman 2:7aab896b1a3b 167 res = strcmp(ent.d_name, list[i]);
kevman 2:7aab896b1a3b 168 if (0 == res) {
kevman 2:7aab896b1a3b 169 res = ent.d_type;
kevman 2:7aab896b1a3b 170 if ((DT_DIR != res) && (DT_REG != res)) {
kevman 2:7aab896b1a3b 171 TEST_ASSERT(1);
kevman 2:7aab896b1a3b 172 }
kevman 2:7aab896b1a3b 173 break;
kevman 2:7aab896b1a3b 174 } else if (i == elements) {
kevman 2:7aab896b1a3b 175 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 176 }
kevman 2:7aab896b1a3b 177 }
kevman 2:7aab896b1a3b 178 }
kevman 2:7aab896b1a3b 179 }
kevman 2:7aab896b1a3b 180
kevman 2:7aab896b1a3b 181 void test_directory_iteration()
kevman 2:7aab896b1a3b 182 {
kevman 2:7aab896b1a3b 183 int res = bd.init();
kevman 2:7aab896b1a3b 184 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 185
kevman 2:7aab896b1a3b 186 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 187 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 188 res = dir[0].open(&fs, "/");
kevman 2:7aab896b1a3b 189 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 190 char *dir_list[] = {"potato", "burito", ".", ".."};
kevman 2:7aab896b1a3b 191
kevman 2:7aab896b1a3b 192 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 193
kevman 2:7aab896b1a3b 194 res = dir[0].close();
kevman 2:7aab896b1a3b 195 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 196 res = fs.unmount();
kevman 2:7aab896b1a3b 197 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 198 res = bd.deinit();
kevman 2:7aab896b1a3b 199 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 200 }
kevman 2:7aab896b1a3b 201
kevman 2:7aab896b1a3b 202 void test_directory_failures()
kevman 2:7aab896b1a3b 203 {
kevman 2:7aab896b1a3b 204 int res = bd.init();
kevman 2:7aab896b1a3b 205 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 206
kevman 2:7aab896b1a3b 207 {
kevman 2:7aab896b1a3b 208 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 209 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 210 res = fs.mkdir("potato", 0777);
kevman 2:7aab896b1a3b 211 TEST_ASSERT_EQUAL(-EEXIST, res);
kevman 2:7aab896b1a3b 212 res = dir[0].open(&fs, "tomato");
kevman 2:7aab896b1a3b 213 TEST_ASSERT_EQUAL(-ENOTDIR, res);
kevman 2:7aab896b1a3b 214 res = dir[0].open(&fs, "burito");
kevman 2:7aab896b1a3b 215 TEST_ASSERT_NOT_EQUAL(0, res);
kevman 2:7aab896b1a3b 216 res = file[0].open(&fs, "tomato", O_RDONLY);
kevman 2:7aab896b1a3b 217 TEST_ASSERT_EQUAL(-ENOENT, res);
kevman 2:7aab896b1a3b 218 res = file[0].open(&fs, "potato", O_RDONLY);
kevman 2:7aab896b1a3b 219 TEST_ASSERT_NOT_EQUAL(0, res);
kevman 2:7aab896b1a3b 220 res = fs.unmount();
kevman 2:7aab896b1a3b 221 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 222 }
kevman 2:7aab896b1a3b 223
kevman 2:7aab896b1a3b 224 res = bd.deinit();
kevman 2:7aab896b1a3b 225 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 226 }
kevman 2:7aab896b1a3b 227
kevman 2:7aab896b1a3b 228 void test_nested_directories()
kevman 2:7aab896b1a3b 229 {
kevman 2:7aab896b1a3b 230 int res = bd.init();
kevman 2:7aab896b1a3b 231 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 232
kevman 2:7aab896b1a3b 233 {
kevman 2:7aab896b1a3b 234 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 235 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 236 res = fs.mkdir("potato/baked", 0777);
kevman 2:7aab896b1a3b 237 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 238 res = fs.mkdir("potato/sweet", 0777);
kevman 2:7aab896b1a3b 239 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 240 res = fs.mkdir("potato/fried", 0777);
kevman 2:7aab896b1a3b 241 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 242 res = fs.unmount();
kevman 2:7aab896b1a3b 243 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 244 }
kevman 2:7aab896b1a3b 245
kevman 2:7aab896b1a3b 246 {
kevman 2:7aab896b1a3b 247 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 248 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 249 res = dir[0].open(&fs, "/");
kevman 2:7aab896b1a3b 250 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 251 char *dir_list[] = {"potato", "baked", "sweet", "fried", ".", ".."};
kevman 2:7aab896b1a3b 252 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 253 res = dir[0].close();
kevman 2:7aab896b1a3b 254 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 255 res = fs.unmount();
kevman 2:7aab896b1a3b 256 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 257 }
kevman 2:7aab896b1a3b 258
kevman 2:7aab896b1a3b 259 res = bd.deinit();
kevman 2:7aab896b1a3b 260 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 261 }
kevman 2:7aab896b1a3b 262
kevman 2:7aab896b1a3b 263 void test_multi_block_directory()
kevman 2:7aab896b1a3b 264 {
kevman 2:7aab896b1a3b 265 int res = bd.init();
kevman 2:7aab896b1a3b 266 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 267
kevman 2:7aab896b1a3b 268 {
kevman 2:7aab896b1a3b 269 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 270 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 271 res = fs.mkdir("cactus", 0777);
kevman 2:7aab896b1a3b 272 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 273 for (int i = 0; i < 128; i++) {
kevman 2:7aab896b1a3b 274 sprintf((char *)buffer, "cactus/test%d", i);
kevman 2:7aab896b1a3b 275 res = fs.mkdir((char *)buffer, 0777);
kevman 2:7aab896b1a3b 276 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 277 }
kevman 2:7aab896b1a3b 278 res = fs.unmount();
kevman 2:7aab896b1a3b 279 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 280 }
kevman 2:7aab896b1a3b 281
kevman 2:7aab896b1a3b 282 {
kevman 2:7aab896b1a3b 283 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 284 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 285 res = dir[0].open(&fs, "cactus");
kevman 2:7aab896b1a3b 286 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 287
kevman 2:7aab896b1a3b 288 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
kevman 2:7aab896b1a3b 289 char *dir_list[] = {".", ".."};
kevman 2:7aab896b1a3b 290 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 291 #endif
kevman 2:7aab896b1a3b 292
kevman 2:7aab896b1a3b 293 for (int i = 0; i < 128; i++) {
kevman 2:7aab896b1a3b 294 sprintf((char *)buffer, "test%d", i);
kevman 2:7aab896b1a3b 295 res = dir[0].read(&ent);
kevman 2:7aab896b1a3b 296 TEST_ASSERT_EQUAL(1, res);
kevman 2:7aab896b1a3b 297 res = strcmp(ent.d_name, (char *)buffer);
kevman 2:7aab896b1a3b 298 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 299 }
kevman 2:7aab896b1a3b 300 res = dir[0].read(&ent);
kevman 2:7aab896b1a3b 301 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 302 res = dir[0].close();
kevman 2:7aab896b1a3b 303 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 304 res = fs.unmount();
kevman 2:7aab896b1a3b 305 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 306 }
kevman 2:7aab896b1a3b 307
kevman 2:7aab896b1a3b 308 res = bd.deinit();
kevman 2:7aab896b1a3b 309 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 310 }
kevman 2:7aab896b1a3b 311
kevman 2:7aab896b1a3b 312 void test_directory_remove()
kevman 2:7aab896b1a3b 313 {
kevman 2:7aab896b1a3b 314 int res = bd.init();
kevman 2:7aab896b1a3b 315 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 316
kevman 2:7aab896b1a3b 317 {
kevman 2:7aab896b1a3b 318 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 319 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 320 res = fs.remove("potato");
kevman 2:7aab896b1a3b 321 TEST_ASSERT_NOT_EQUAL(0, res);
kevman 2:7aab896b1a3b 322 res = fs.remove("potato/sweet");
kevman 2:7aab896b1a3b 323 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 324 res = fs.remove("potato/baked");
kevman 2:7aab896b1a3b 325 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 326 res = fs.remove("potato/fried");
kevman 2:7aab896b1a3b 327 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 328 res = dir[0].open(&fs, "potato");
kevman 2:7aab896b1a3b 329 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 330
kevman 2:7aab896b1a3b 331 #if (MBED_TEST_FILESYSTEM != FATFileSystem)
kevman 2:7aab896b1a3b 332 char *dir_list[] = {".", ".."};
kevman 2:7aab896b1a3b 333 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 334 #endif
kevman 2:7aab896b1a3b 335
kevman 2:7aab896b1a3b 336 res = dir[0].read(&ent);
kevman 2:7aab896b1a3b 337 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 338 res = dir[0].close();
kevman 2:7aab896b1a3b 339 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 340 res = fs.remove("potato");
kevman 2:7aab896b1a3b 341 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 342 res = fs.unmount();
kevman 2:7aab896b1a3b 343 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 344 }
kevman 2:7aab896b1a3b 345
kevman 2:7aab896b1a3b 346 {
kevman 2:7aab896b1a3b 347 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 348 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 349 res = dir[0].open(&fs, "/");
kevman 2:7aab896b1a3b 350 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 351 char *dir_list[] = {"burito", "cactus", ".", ".."};
kevman 2:7aab896b1a3b 352 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 353 res = dir[0].close();
kevman 2:7aab896b1a3b 354 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 355 res = fs.unmount();
kevman 2:7aab896b1a3b 356 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 357 }
kevman 2:7aab896b1a3b 358
kevman 2:7aab896b1a3b 359 res = bd.deinit();
kevman 2:7aab896b1a3b 360 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 361 }
kevman 2:7aab896b1a3b 362
kevman 2:7aab896b1a3b 363 void test_directory_rename()
kevman 2:7aab896b1a3b 364 {
kevman 2:7aab896b1a3b 365 int res = bd.init();
kevman 2:7aab896b1a3b 366 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 367
kevman 2:7aab896b1a3b 368 {
kevman 2:7aab896b1a3b 369 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 370 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 371 res = fs.mkdir("coldpotato", 0777);
kevman 2:7aab896b1a3b 372 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 373 res = fs.mkdir("coldpotato/baked", 0777);
kevman 2:7aab896b1a3b 374 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 375 res = fs.mkdir("coldpotato/sweet", 0777);
kevman 2:7aab896b1a3b 376 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 377 res = fs.mkdir("coldpotato/fried", 0777);
kevman 2:7aab896b1a3b 378 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 379 res = fs.unmount();
kevman 2:7aab896b1a3b 380 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 381 }
kevman 2:7aab896b1a3b 382
kevman 2:7aab896b1a3b 383 {
kevman 2:7aab896b1a3b 384 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 385 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 386 res = fs.rename("coldpotato", "hotpotato");
kevman 2:7aab896b1a3b 387 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 388 res = fs.unmount();
kevman 2:7aab896b1a3b 389 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 390 }
kevman 2:7aab896b1a3b 391
kevman 2:7aab896b1a3b 392 {
kevman 2:7aab896b1a3b 393 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 394 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 395 res = dir[0].open(&fs, "hotpotato");
kevman 2:7aab896b1a3b 396 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 397 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
kevman 2:7aab896b1a3b 398 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 399 res = dir[0].close();
kevman 2:7aab896b1a3b 400 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 401 res = fs.unmount();
kevman 2:7aab896b1a3b 402 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 403 }
kevman 2:7aab896b1a3b 404
kevman 2:7aab896b1a3b 405 {
kevman 2:7aab896b1a3b 406 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 407 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 408 res = fs.mkdir("warmpotato", 0777);
kevman 2:7aab896b1a3b 409 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 410 res = fs.mkdir("warmpotato/mushy", 0777);
kevman 2:7aab896b1a3b 411 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 412 res = fs.rename("hotpotato", "warmpotato");
kevman 2:7aab896b1a3b 413 TEST_ASSERT_NOT_EQUAL(0, res);
kevman 2:7aab896b1a3b 414 res = fs.remove("warmpotato/mushy");
kevman 2:7aab896b1a3b 415 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 416 res = fs.remove("warmpotato");
kevman 2:7aab896b1a3b 417 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 418 res = fs.rename("hotpotato", "warmpotato");
kevman 2:7aab896b1a3b 419 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 420 res = fs.unmount();
kevman 2:7aab896b1a3b 421 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 422 }
kevman 2:7aab896b1a3b 423
kevman 2:7aab896b1a3b 424 {
kevman 2:7aab896b1a3b 425 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 426 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 427 res = dir[0].open(&fs, "warmpotato");
kevman 2:7aab896b1a3b 428 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 429 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
kevman 2:7aab896b1a3b 430 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 431 res = dir[0].close();
kevman 2:7aab896b1a3b 432 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 433 res = fs.unmount();
kevman 2:7aab896b1a3b 434 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 435 }
kevman 2:7aab896b1a3b 436
kevman 2:7aab896b1a3b 437 {
kevman 2:7aab896b1a3b 438 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 439 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 440 res = fs.mkdir("coldpotato", 0777);
kevman 2:7aab896b1a3b 441 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 442 res = fs.rename("warmpotato/baked", "coldpotato/baked");
kevman 2:7aab896b1a3b 443 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 444 res = fs.rename("warmpotato/sweet", "coldpotato/sweet");
kevman 2:7aab896b1a3b 445 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 446 res = fs.rename("warmpotato/fried", "coldpotato/fried");
kevman 2:7aab896b1a3b 447 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 448 res = fs.remove("coldpotato");
kevman 2:7aab896b1a3b 449 TEST_ASSERT_NOT_EQUAL(0, res);
kevman 2:7aab896b1a3b 450 res = fs.remove("warmpotato");
kevman 2:7aab896b1a3b 451 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 452 res = fs.unmount();
kevman 2:7aab896b1a3b 453 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 454 }
kevman 2:7aab896b1a3b 455
kevman 2:7aab896b1a3b 456 {
kevman 2:7aab896b1a3b 457 res = fs.mount(&bd);
kevman 2:7aab896b1a3b 458 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 459 res = dir[0].open(&fs, "coldpotato");
kevman 2:7aab896b1a3b 460 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 461 char *dir_list[] = {"baked", "sweet", "fried", ".", ".."};
kevman 2:7aab896b1a3b 462 dir_file_check(dir_list, (sizeof(dir_list) / sizeof(dir_list[0])));
kevman 2:7aab896b1a3b 463 res = dir[0].close();
kevman 2:7aab896b1a3b 464 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 465 res = fs.unmount();
kevman 2:7aab896b1a3b 466 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 467 }
kevman 2:7aab896b1a3b 468
kevman 2:7aab896b1a3b 469 res = bd.deinit();
kevman 2:7aab896b1a3b 470 TEST_ASSERT_EQUAL(0, res);
kevman 2:7aab896b1a3b 471 }
kevman 2:7aab896b1a3b 472
kevman 2:7aab896b1a3b 473
kevman 2:7aab896b1a3b 474
kevman 2:7aab896b1a3b 475 // test setup
kevman 2:7aab896b1a3b 476 utest::v1::status_t test_setup(const size_t number_of_cases)
kevman 2:7aab896b1a3b 477 {
kevman 2:7aab896b1a3b 478 GREENTEA_SETUP(MBED_TEST_TIMEOUT, "default_auto");
kevman 2:7aab896b1a3b 479 return verbose_test_setup_handler(number_of_cases);
kevman 2:7aab896b1a3b 480 }
kevman 2:7aab896b1a3b 481
kevman 2:7aab896b1a3b 482 Case cases[] = {
kevman 2:7aab896b1a3b 483 Case("Directory tests", test_directory_tests),
kevman 2:7aab896b1a3b 484 Case("Root directory", test_root_directory),
kevman 2:7aab896b1a3b 485 Case("Directory creation", test_directory_creation),
kevman 2:7aab896b1a3b 486 Case("File creation", test_file_creation),
kevman 2:7aab896b1a3b 487 Case("Directory iteration", test_directory_iteration),
kevman 2:7aab896b1a3b 488 Case("Directory failures", test_directory_failures),
kevman 2:7aab896b1a3b 489 Case("Nested directories", test_nested_directories),
kevman 2:7aab896b1a3b 490 Case("Multi-block directory", test_multi_block_directory),
kevman 2:7aab896b1a3b 491 Case("Directory remove", test_directory_remove),
kevman 2:7aab896b1a3b 492 Case("Directory rename", test_directory_rename),
kevman 2:7aab896b1a3b 493 };
kevman 2:7aab896b1a3b 494
kevman 2:7aab896b1a3b 495 Specification specification(test_setup, cases);
kevman 2:7aab896b1a3b 496
kevman 2:7aab896b1a3b 497 int main()
kevman 2:7aab896b1a3b 498 {
kevman 2:7aab896b1a3b 499 return !Harness::run(specification);
kevman 2:7aab896b1a3b 500 }