Add battfs config file; add shuffle for free blocks.
[bertos.git] / bertos / fs / battfs_test.c
index 9829eb715e79c8958a7a5db8d5ce10e9f23724d5..5d75e8331e9c8a8043a2c66279d0e4cda941c89e 100644 (file)
@@ -118,7 +118,6 @@ static bool disk_close(struct BattFsSuper *d)
 
 static bool disk_open(struct BattFsSuper *d)
 {
-       d->page_size = PAGE_SIZE;
        d->read = disk_page_read;
        d->load = disk_page_load;
        d->bufferWrite = disk_buffer_write;
@@ -1052,6 +1051,61 @@ 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++)
+       {
+               kprintf("apertura %d\n", 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;
@@ -1075,6 +1129,7 @@ int battfs_testRun(void)
        writeEOF(&disk);
        endOfSpace(&disk);
        multipleFilesRW(&disk);
+       openAllFiles(&disk);
 
        kprintf("All tests passed!\n");