X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Ffs%2Fbattfs_test.c;h=5d75e8331e9c8a8043a2c66279d0e4cda941c89e;hb=78ba83720d538ac0c32b04bb672101f0cc9bfb14;hp=1e6d844c9bbda22109cc1df3945e39dd896c3441;hpb=f7d8da5a4b5c03b208309c2f0fb1c164f6478235;p=bertos.git diff --git a/bertos/fs/battfs_test.c b/bertos/fs/battfs_test.c index 1e6d844c..5d75e833 100644 --- a/bertos/fs/battfs_test.c +++ b/bertos/fs/battfs_test.c @@ -1051,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; @@ -1074,6 +1129,7 @@ int battfs_testRun(void) writeEOF(&disk); endOfSpace(&disk); multipleFilesRW(&disk); + openAllFiles(&disk); kprintf("All tests passed!\n");