Remove c files inclusions: use libunittest instead.
[bertos.git] / bertos / fs / battfs_test.c
index 1e6d844c9bbda22109cc1df3945e39dd896c3441..642e6d6423b179c60ee777f76a53c27cbc50b279 100644 (file)
@@ -167,8 +167,9 @@ static void testCheck(BattFsSuper *disk, pgcnt_t *reference)
                        exit(2);
                }
        }
+
        ASSERT(battfs_fsck(disk));
-       battfs_umount(disk);
+       ASSERT(battfs_umount(disk));
 }
 
 static void diskNew(BattFsSuper *disk)
@@ -1051,6 +1052,58 @@ static void multipleFilesRW(BattFsSuper *disk)
 }
 
 
+static void openAllFiles(BattFsSuper *disk)
+{
+       TRACEMSG("22: try to open a lot of files\n");
+
+       FILE *fpt = fopen(test_filename, "w+");
+
+       for (int i = 0; i < FILE_SIZE; i++)
+               fputc(0xff, fpt);
+       fclose(fpt);
+
+       BattFs fd[BATTFS_MAX_FILES];
+       unsigned int MODE = BATTFS_CREATE;
+
+       ASSERT(disk_open(disk));
+       ASSERT(battfs_mount(disk));
+       ASSERT(battfs_fsck(disk));
+       for (unsigned i = 0; i < countof(fd); i++)
+               ASSERT(battfs_fileopen(disk, &fd[i], i, MODE));
+
+       ASSERT(battfs_fsck(disk));
+
+       for (unsigned i = 0; i < countof(fd); i++)
+       {
+               ASSERT(kfile_close(&fd[i].fd) == 0);
+               ASSERT(kfile_error(&fd[i].fd) == 0);
+       }
+
+       ASSERT(battfs_fsck(disk));
+       ASSERT(battfs_umount(disk));
+
+       ASSERT(disk_open(disk));
+       ASSERT(battfs_mount(disk));
+       ASSERT(battfs_fsck(disk));
+
+
+       for (unsigned i = 0; i < countof(fd); i++)
+               ASSERT(battfs_fileopen(disk, &fd[i], i, MODE));
+
+       ASSERT(battfs_fsck(disk));
+
+       for (unsigned i = 0; i < countof(fd); i++)
+       {
+               ASSERT(kfile_close(&fd[i].fd) == 0);
+               ASSERT(kfile_error(&fd[i].fd) == 0);
+       }
+
+       ASSERT(battfs_fsck(disk));
+       ASSERT(battfs_umount(disk));
+       TRACEMSG("22: passed\n");
+}
+
+
 int battfs_testRun(void)
 {
        BattFsSuper disk;
@@ -1074,6 +1127,7 @@ int battfs_testRun(void)
        writeEOF(&disk);
        endOfSpace(&disk);
        multipleFilesRW(&disk);
+       openAllFiles(&disk);
 
        kprintf("All tests passed!\n");
 
@@ -1090,12 +1144,6 @@ int battfs_testTearDown(void)
        return 0;
 }
 
-TEST_MAIN(battfs)
-
-#include <fs/battfs.c>
-#include <kern/kfile.c>
-#include <drv/kdebug.c>
-#include <mware/formatwr.c>
-#include <mware/hex.c>
+TEST_MAIN(battfs);
 
 #endif // _TEST