SDHI_driver patch (mbedOS 5.11.5)

Committer:
tvendov
Date:
Fri Mar 29 19:47:34 2019 +0200
Revision:
2:7c75ab32d7c9
Fix: Folder structure changed. All SD Auto tests pass with OK!

Who changed what in which revision?

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