From: batt Date: Thu, 11 Sep 2008 16:32:55 +0000 (+0000) Subject: Unbreak battfs_test: comply with new policy. X-Git-Tag: 2.0.0~132 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=1f1d780c5ec0c233691a0059be2537c4cb862915;p=bertos.git Unbreak battfs_test: comply with new policy. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@1802 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/app/battfs/appconfig.h b/app/battfs/appconfig.h deleted file mode 100644 index 74686264..00000000 --- a/app/battfs/appconfig.h +++ /dev/null @@ -1,230 +0,0 @@ -/** - * \file - * - * - * \brief DevLib configuration options - * - * You should copy this header in your project and rename it to - * "config.h" and delete the CONFIG_ macros for the modules - * you're not using. - * - *

Working with multiple applications

- * - * If your project is made of multiple DevLib-based applications, - * create a custom "config.h" file in each application subdirectory - * and play with the compiler include path to get the desired result. - * You can share common options by creationg a "config_common.h" header - * and including it from all your "config.h" copies. - * - *

Configuration style

- * - * For improved compile-time checking of configuration options, - * the preferred way to use a \c CONFIG_ symbol is keeping it - * always defined with a value of either 0 or 1. This lets - * you write tests like this: - * - * \code - * #if CONFIG_FOO - * void foo(void) - * { - * if (CONFIG_BAR) - * bar(); - * } - * #endif // CONFIG_FOO - * \endcode - * - * In most cases, we rely on the optimizer to discard checks - * on constant values and performing dead-code elimination. - * - * \version $Id$ - * \author Bernie Innocenti - * \author Stefano Fedrigo - */ - -#ifndef APPCONFIG_COMMON_H -#define APPCONFIG_COMMON_H - -/** kdebug console */ -#define CONFIG_KDEBUG_PORT 0 - - -/** Baud-rate for the kdebug console */ -#define CONFIG_KDEBUG_BAUDRATE 19200 - -/** - * printf()-style formatter configuration. - * - * \sa PRINTF_DISABLED - * \sa PRINTF_NOMODIFIERS - * \sa PRINTF_REDUCED - * \sa PRINTF_NOFLOAT - * \sa PRINTF_FULL - */ -#define CONFIG_PRINTF PRINTF_FULL - -/** - * Multithreading kernel. - * - * \sa config_kern.h - */ -#define CONFIG_KERN 0 - -/** - * \name Serial driver parameters - * \{ - */ - /** [bytes] Size of the outbound FIFO buffer for port 0. */ - #define CONFIG_UART0_TXBUFSIZE 32 - - /** [bytes] Size of the inbound FIFO buffer for port 0. */ - #define CONFIG_UART0_RXBUFSIZE 64 - - /** [bytes] Size of the outbound FIFO buffer for port 1. */ - #define CONFIG_UART1_TXBUFSIZE 32 - - /** [bytes] Size of the inbound FIFO buffer for port 1. */ - #define CONFIG_UART1_RXBUFSIZE 64 - - /** [bytes] Size of the outbound FIFO buffer for SPI port (AVR only). */ - #define CONFIG_SPI_TXBUFSIZE 16 - - /** [bytes] Size of the inbound FIFO buffer for SPI port (AVR only). */ - #define CONFIG_SPI_RXBUFSIZE 32 - - /** SPI data order (AVR only). */ - #define CONFIG_SPI_DATA_ORDER SER_MSB_FIRST - - /** SPI clock division factor (AVR only). */ - #define CONFIG_SPI_CLOCK_DIV 16 - - /** SPI clock polarity: 0 = normal low, 1 = normal high (AVR only). */ - #define CONFIG_SPI_CLOCK_POL 0 - - /** SPI clock phase: 0 = sample on first edge, 1 = sample on second clock edge (AVR only). */ - #define CONFIG_SPI_CLOCK_PHASE 0 - - /** Default transmit timeout (ms). Set to -1 to disable timeout support */ - #define CONFIG_SER_TXTIMEOUT -1 - - /** Default receive timeout (ms). Set to -1 to disable timeout support */ - #define CONFIG_SER_RXTIMEOUT -1 - - /** Use RTS/CTS handshake */ - #define CONFIG_SER_HWHANDSHAKE 0 - - /** Default baud rate (set to 0 to disable) */ - #define CONFIG_SER_DEFBAUDRATE 0 - - /** Enable second serial port in emulator. */ - #define CONFIG_EMUL_UART1 0 - - /** - * Transmit always something on serial port 0 TX - * to avoid interference when sending burst of data, - * using AVR multiprocessor serial mode - */ - #define CONFIG_SER_TXFILL 0 - - #define CONFIG_SER_STROBE 0 -/*\}*/ - -/// Hardware timer selection for drv/timer.c -#define CONFIG_TIMER TIMER_ON_OUTPUT_COMPARE2 - -/// Debug timer interrupt using a strobe pin. -#define CONFIG_TIMER_STROBE 0 - -/// Enable ADS strobe. -#define CONFIG_ADC_STROBE 0 - -/// Enable watchdog timer. -#define CONFIG_WATCHDOG 0 - -/// EEPROM type for drv/eeprom.c -#define CONFIG_EEPROM_TYPE EEPROM_24XX256 - -/// Select bitmap pixel format. -#define CONFIG_BITMAP_FMT BITMAP_FMT_PLANAR_V_LSB - -/// Enable line clipping algorithm. -#define CONFIG_GFX_CLIPPING 1 - -/// Enable text rendering in bitmaps. -#define CONFIG_GFX_TEXT 1 - -/// Enable virtual coordinate system. -#define CONFIG_GFX_VCOORDS 1 - -/// Keyboard polling method -#define CONFIG_KBD_POLL KBD_POLL_SOFTINT - -/// Enable keyboard event delivery to observers -#define CONFIG_KBD_OBSERVER 0 - -/// Enable key beeps -#define CONFIG_KBD_BEEP 1 - -/// Enable long pression handler for keys -#define CONFIG_KBD_LONGPRESS 1 - -/** - * \name Type for the chart dataset - * \{ - */ -#define CONFIG_CHART_TYPE_X uint8_t -#define CONFIG_CHART_TYPE_Y uint8_t -/*\}*/ - -/// Enable button bar behind menus -#define CONFIG_MENU_MENUBAR 0 - -/// Enable smooth scrolling in menus -#define CONFIG_MENU_SMOOTH 1 - -/// Size of block for MD2 algorithm. -#define CONFIG_MD2_BLOCK_LEN 16 - -/// Use standard permutation in MD2 algorithm. -#define CONFIG_MD2_STD_PERM 0 - -/// Define a size, in byte, of entropy pool. -#define CONFIG_SIZE_ENTROPY_POOL 64 - -/// Turn on or off timer support in Randpool. -#define CONFIG_RANDPOOL_TIMER 1 - -/** Enable kfile_gets() and kfile_gets_echo() */ -#define CONFIG_KFILE_GETS 1 - -#define CONFIG_TEST 0 - - -#endif /* APPCONFIG_H */ diff --git a/app/battfs/battfs_test.c b/app/battfs/battfs_test.c deleted file mode 100644 index 839d7811..00000000 --- a/app/battfs/battfs_test.c +++ /dev/null @@ -1,565 +0,0 @@ -/** - * \file - * - * - * \brief BattFS Test. - * - * \version $Id: demo.c 18242 2007-10-08 17:35:23Z marco $ - * \author Francesco Sacchi - */ - -#include - -#include -#include - -#include -#include -#include - -#define FILE_SIZE 32768 -#define PAGE_SIZE 128 -#define PAGE_COUNT FILE_SIZE / PAGE_SIZE - -FILE *fp; -const char test_filename[]="battfs_disk.bin"; - - -static bool disk_open(struct BattFsSuper *d) -{ - fp = fopen(test_filename, "r+b"); - ASSERT(fp); - fseek(fp, 0, SEEK_END); - d->page_size = PAGE_SIZE; - d->page_count = ftell(fp) / d->page_size; - d->page_array = malloc(d->page_count * sizeof(pgcnt_t)); - //TRACEMSG("page_size:%d, page_count:%d\n", d->page_size, d->page_count); - return (fp && d->page_array); -} - -static size_t disk_page_read(struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, void *buf, size_t size) -{ - //TRACEMSG("page:%d, addr:%d, size:%d\n", page, addr, size); - fseek(fp, page * d->page_size + addr, SEEK_SET); - return fread(buf, 1, size, fp); -} - -static size_t disk_page_write(struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, const void *buf, size_t size) -{ - //TRACEMSG("page:%d, addr:%d, size:%d\n", page, addr, size); - fseek(fp, page * d->page_size + addr, SEEK_SET); - return fwrite(buf, 1, size, fp); -} - -static bool disk_page_erase(struct BattFsSuper *d, pgcnt_t page) -{ - //TRACEMSG("page:%d\n", page); - fseek(fp, page * d->page_size, SEEK_SET); - - for (int i = 0; i < d->page_size; i++) - if (fputc(0xff, fp) == EOF) - return false; - return true; -} - -static bool disk_close(struct BattFsSuper *d) -{ - //TRACE; - free(d->page_array); - return (fclose(fp) != EOF); -} - -static void testCheck(BattFsSuper *disk, pgcnt_t *reference) -{ - ASSERT(battfs_init(disk)); - - for (int i = 0; i < disk->page_count; i++) - { - if (disk->page_array[i] != reference[i]) - { - kprintf("Error at addr %d: page_array read", i); - for (pgcnt_t i = 0; i < disk->page_count; i++) - { - if (!(i % 16)) - kputchar('\n'); - kprintf("%04d ", disk->page_array[i]); - } - kputchar('\n'); - kprintf("Expected:"); - for (pgcnt_t i = 0; i < disk->page_count; i++) - { - if (!(i % 16)) - kputchar('\n'); - kprintf("%04d ", reference[i]); - } - kputchar('\n'); - battfs_close(disk); - exit(2); - } - } - battfs_close(disk); -} - -static void test1(BattFsSuper *disk) -{ - pgcnt_t ref[PAGE_COUNT]; - kprintf("Test1: disk new\n"); - - FILE *fpt = fopen(test_filename, "w+"); - - for (int i = 0; i < FILE_SIZE; i++) - fputc(0xff, fpt); - fclose(fpt); - for (int i = 0; i < PAGE_COUNT; i++) - ref[i] = PAGE_COUNT - i - 1; - - testCheck(disk, ref); - kprintf("Test1: passed\n"); -} - -static void test2(BattFsSuper *disk) -{ - pgcnt_t ref[PAGE_COUNT]; - kprintf("Test2: disk full with 1 contiguos file\n"); - - - fp = fopen(test_filename, "w+"); - - for (int i = 0; i < PAGE_COUNT; i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); - ref[i] = i; - } - fclose(fp); - - testCheck(disk, ref); - kprintf("Test2: passed\n"); -} - - -static void test3(BattFsSuper *disk) -{ - pgcnt_t ref[PAGE_COUNT]; - kprintf("Test3: disk half full with 1 contiguos file, rest unformatted\n"); - - - fp = fopen(test_filename, "w+"); - - for (int i = 0; i < PAGE_COUNT / 2; i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); - ref[i] = i; - } - fseek(fp, FILE_SIZE / 2, SEEK_SET); - for (int i = FILE_SIZE / 2; i < FILE_SIZE; i++) - fputc(0xff, fp); - fclose(fp); - - for (int i = PAGE_COUNT / 2; i < PAGE_COUNT; i++) - { - ref[i] = PAGE_COUNT + PAGE_COUNT / 2 - i - 1; - } - - - testCheck(disk, ref); - kprintf("Test3: passed\n"); -} - -static void test4(BattFsSuper *disk) -{ - pgcnt_t ref[PAGE_COUNT]; - kprintf("Test4: disk half full with 1 contiguos file, rest marked free\n"); - - - fp = fopen(test_filename, "w+"); - - for (int i = 0; i < PAGE_COUNT / 2; i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); - ref[i] = i; - } - for (int i = PAGE_COUNT / 2; i < PAGE_COUNT; i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, i); - ref[i] = i; - } - fclose(fp); - - - testCheck(disk, ref); - kprintf("Test4: passed\n"); -} - -static void test5(BattFsSuper *disk) -{ - pgcnt_t ref[PAGE_COUNT]; - kprintf("Test5: disk 1/3 full with 1 contiguos file, 1/3 marked free, rest unformatted\n"); - - - fp = fopen(test_filename, "w+"); - - for (int i = 0; i < FILE_SIZE; i++) - fputc(0xff, fp); - - for (int i = 0; i < PAGE_COUNT / 3; i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); - ref[i] = i; - } - for (int i = PAGE_COUNT / 3; i < 2 * (PAGE_COUNT / 3); i++) - { - battfs_writeTestBlock(disk, i, 0, 0, 0, i, i); - ref[i + PAGE_COUNT / 3 + 1] = i; - } - fclose(fp); - - for (int i = PAGE_COUNT / 3; i < 2 * (PAGE_COUNT / 3) + 1; i++) - ref[i] = PAGE_COUNT + PAGE_COUNT / 3 - i - 1; - - testCheck(disk, ref); - kprintf("Test5: passed\n"); -} - -static void test6(BattFsSuper *disk) -{ - pgcnt_t ref[4]; - kprintf("Test6: 1 file with 1 old seq num, 1 free block\n"); - - - fp = fopen(test_filename, "w+"); - - battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 1, 0, 0, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, 0, 1, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, 0, 0, 0, 0, 123); - - fclose(fp); - ref[0] = 0; - ref[1] = 2; - ref[2] = 3; - ref[3] = 1; - - testCheck(disk, ref); - kprintf("Test6: passed\n"); -} - -static void test7(BattFsSuper *disk) -{ - pgcnt_t ref[4]; - kprintf("Test7: 1 file with 1 old seq num, 1 free block\n"); - - - fp = fopen(test_filename, "w+"); - - battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 1, 0, 1, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, 0, 0, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, 0, 0, 0, 0, 123); - - fclose(fp); - ref[0] = 0; - ref[1] = 1; - ref[2] = 3; - ref[3] = 2; - - testCheck(disk, ref); - kprintf("Test7: passed\n"); -} - -static void test8(BattFsSuper *disk) -{ - pgcnt_t ref[4]; - kprintf("Test8: 1 file with 1 old seq num, 1 free block\n"); - - - fp = fopen(test_filename, "w+"); - - battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, 1235); - battfs_writeTestBlock(disk, 1, 0, 0, 0, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, 0, 1, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, 0, 0, 0, 1, MARK_PAGE_VALID); - - - fclose(fp); - ref[0] = 1; - ref[1] = 2; - ref[2] = 0; - ref[3] = 3; - - testCheck(disk, ref); - kprintf("Test8: passed\n"); -} - -static void test9(BattFsSuper *disk) -{ - pgcnt_t ref[8]; - kprintf("Test9: 2 file with old seq num, 2 free block\n"); - - - fp = fopen(test_filename, "w+"); - - battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, 1235); - battfs_writeTestBlock(disk, 1, 0, 0, 0, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, 0, 3, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, 0, 0, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 4, 0, 0, 0, 0, 1236); - battfs_writeTestBlock(disk, 5, 4, 0, 0, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 6, 4, 1, 0, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 7, 4, 0, 0, 1, MARK_PAGE_VALID); - - - fclose(fp); - ref[0] = 1; - ref[1] = 3; - ref[2] = 5; - ref[3] = 6; - ref[4] = 0; - ref[5] = 4; - ref[6] = 2; - ref[7] = 7; - - testCheck(disk, ref); - kprintf("Test9: passed\n"); -} - -static void test10(BattFsSuper *disk) -{ - BattFS fd1; - BattFS fd2; - kprintf("Test10: open file test, inode 0 and inode 4\n"); - - fp = fopen(test_filename, "w+"); - - unsigned int PAGE_FILL = 116; - unsigned int INODE = 0; - unsigned int INODE2 = 4; - unsigned int INEXISTENT_INODE = 123; - unsigned int MODE = 0; - - battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); - battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 4, INODE2, 0, PAGE_FILL, 0, 1236); - battfs_writeTestBlock(disk, 5, INODE2, 0, PAGE_FILL, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 6, INODE2, 1, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 7, INODE2, 0, PAGE_FILL, 1, MARK_PAGE_VALID); - - fclose(fp); - - ASSERT(battfs_init(disk)); - ASSERT(!battfs_fileExists(disk, INEXISTENT_INODE)); - - ASSERT(battfs_fileExists(disk, INODE)); - ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); - ASSERT(fd1.fd.size == PAGE_FILL * 2); - ASSERT(fd1.fd.seek_pos == 0); - ASSERT(fd1.mode == MODE); - ASSERT(fd1.inode == INODE); - ASSERT(fd1.start == &disk->page_array[0]); - ASSERT(fd1.disk == disk); - ASSERT(LIST_HEAD(&disk->file_opened_list) == &fd1.link); - - ASSERT(kfile_reopen(&fd1.fd) == &fd1.fd); - ASSERT(fd1.fd.size == PAGE_FILL * 2); - ASSERT(fd1.fd.seek_pos == 0); - ASSERT(fd1.mode == MODE); - ASSERT(fd1.inode == INODE); - ASSERT(fd1.start == &disk->page_array[0]); - ASSERT(fd1.disk == disk); - ASSERT(LIST_HEAD(&disk->file_opened_list) == &fd1.link); - - ASSERT(battfs_fileExists(disk, INODE2)); - ASSERT(battfs_fileopen(disk, &fd2, INODE2, MODE)); - ASSERT(fd2.fd.size == PAGE_FILL * 2); - ASSERT(fd2.fd.seek_pos == 0); - ASSERT(fd2.mode == MODE); - ASSERT(fd2.inode == INODE2); - ASSERT(fd2.start == &disk->page_array[2]); - ASSERT(fd2.disk == disk); - ASSERT(LIST_HEAD(&disk->file_opened_list)->succ == &fd2.link); - - ASSERT(kfile_close(&fd1.fd) == 0); - ASSERT(kfile_close(&fd2.fd) == 0); - ASSERT(LIST_EMPTY(&disk->file_opened_list)); - ASSERT(battfs_close(disk)); - - kprintf("Test10: passed\n"); -} - -static void test11(BattFsSuper *disk) -{ - BattFS fd1; - uint8_t buf[16]; - - kprintf("Test11: read file test\n"); - - fp = fopen(test_filename, "w+"); - - unsigned int PAGE_FILL = 116; - unsigned int INODE = 0; - unsigned int INODE2 = 4; - unsigned int MODE = 0; - - battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); - battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 4, INODE2, 0, PAGE_FILL, 0, 1236); - battfs_writeTestBlock(disk, 5, INODE2, 0, PAGE_FILL, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 6, INODE2, 1, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 7, INODE2, 0, PAGE_FILL, 1, MARK_PAGE_VALID); - - fclose(fp); - - ASSERT(battfs_init(disk)); - ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); - ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); - ASSERT(fd1.fd.seek_pos == sizeof(buf)); - for (size_t i = 0; i < sizeof(buf); i++) - ASSERT(buf[i] == 0); - - ASSERT(kfile_close(&fd1.fd) == 0); - ASSERT(battfs_close(disk)); - - kprintf("Test11: passed\n"); -} - -static void test12(BattFsSuper *disk) -{ - BattFS fd1; - - kprintf("Test12: read file test across page boundary and seek test\n"); - - fp = fopen(test_filename, "w+"); - - const unsigned int PAGE_FILL = 116; - unsigned int INODE = 0; - unsigned int MODE = 0; - uint8_t buf[PAGE_FILL + 10]; - - battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); - battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 4, INODE, 0, PAGE_FILL, 0, 1236); - battfs_writeTestBlock(disk, 5, INODE, 0, PAGE_FILL, 2, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 6, INODE, 1, PAGE_FILL, 3, MARK_PAGE_VALID); - battfs_writeTestBlock(disk, 7, INODE, 0, PAGE_FILL, 3, MARK_PAGE_VALID); - - fclose(fp); - - ASSERT(battfs_init(disk)); - ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); - - ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); - ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf)); - for (size_t i = 0; i < sizeof(buf); i++) - ASSERT(buf[i] == 0); - - ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); - ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf) * 2); - for (size_t i = 0; i < sizeof(buf); i++) - ASSERT(buf[i] == 0); - - ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); - ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf) * 3); - for (size_t i = 0; i < sizeof(buf); i++) - ASSERT(buf[i] == 0); - - ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == 86); - ASSERT(fd1.fd.seek_pos == (kfile_off_t)fd1.fd.size); - for (size_t i = 0; i < 86; i++) - ASSERT(buf[i] == 0); - - ASSERT(kfile_seek(&fd1.fd, 0, KSM_SEEK_SET) == 0); - ASSERT(fd1.fd.seek_pos == 0); - - ASSERT(kfile_seek(&fd1.fd, 0, KSM_SEEK_END) == (kfile_off_t)fd1.fd.size); - ASSERT(fd1.fd.seek_pos = (kfile_off_t)fd1.fd.size); - - ASSERT(kfile_close(&fd1.fd) == 0); - ASSERT(battfs_close(disk)); - - kprintf("Test12: passed\n"); -} - - -int battfs_testRun(void) -{ - BattFsSuper disk; - - disk.open = disk_open; - disk.read = disk_page_read; - disk.write = disk_page_write; - disk.erase = disk_page_erase; - disk.close = disk_close; - test1(&disk); - test2(&disk); - test3(&disk); - test4(&disk); - test5(&disk); - test6(&disk); - test7(&disk); - test8(&disk); - test9(&disk); - test10(&disk); - test11(&disk); - test12(&disk); - kprintf("All tests passed!\n"); - - return 0; -} - -#if UNIT_TEST - -int battfs_testSetup(void) -{ - return 0; -} - -int battfs_testTearDown(void) -{ - return 0; -} - -TEST_MAIN(battfs) - -#include "fs/battfs.c" -#include "drv/kdebug.c" -#include "mware/formatwr.c" -#include "mware/hex.c" - -#else -int main(void) -{ - return battfs_testRun(); -} -#endif // _TEST diff --git a/app/battfs/battfs_test.mk b/app/battfs/battfs_test.mk deleted file mode 100644 index 553aa3e3..00000000 --- a/app/battfs/battfs_test.mk +++ /dev/null @@ -1,30 +0,0 @@ -# -# $Id: demo.mk 18234 2007-10-08 13:39:48Z rasky $ -# Copyright 2003, 2004, 2005, 2006 Develer S.r.l. (http://www.develer.com/) -# All rights reserved. -# -# Makefile fragment for DevLib demo application. -# -# Author: Bernie Innocenti -# - -# Set to 1 for debug builds -battfs_test_DEBUG = 1 - -# Our target application -TRG += battfs_test - - -battfs_test_CSRC = \ - bertos/fs/battfs.c \ - app/battfs/battfs_test.c \ - bertos/kern/kfile.c - -battfs_test_CFLAGS = -O0 -D'ARCH=ARCH_EMUL' -D_EMUL -Iapp/battfs -g3 - - -# Debug stuff -ifeq ($(battfs_test_DEBUG),1) - battfs_test_CFLAGS += -D_DEBUG -endif - diff --git a/app/battfs/verstag.h b/app/battfs/verstag.h deleted file mode 100644 index b6bbde4b..00000000 --- a/app/battfs/verstag.h +++ /dev/null @@ -1,94 +0,0 @@ -/** - * \file - * - * - * \version $Id$ - * - * \author Bernie Innocenti - * - * \brief Declare application version strings - */ -#ifndef DEVLIB_VERSTAG_H -#define DEVLIB_VERSTAG_H - -#ifndef ARCH_CONFIG_H - #include "cfg/arch_config.h" -#endif - -#define APP_NAME "Devlib Demo" -#define APP_DESCRIPTION "DevLib Multidemo Application" -#define APP_AUTHOR "Develer" -#define APP_COPYRIGHT "Copyright 2006 Develer (http://www.develer.com/)" - -#define VERS_MAJOR 0 -#define VERS_MINOR 1 -#define VERS_REV 0 -#define VERS_LETTER "" - -/** - * If _SNAPSHOT is defined, \c VERS_TAG contains the build date - * date instead of a numeric version string. - */ -#define _SNAPSHOT - -#ifdef _DEBUG - #define VERS_DBG "D" -#else - #define VERS_DBG "" -#endif - -#define __STRINGIZE(x) #x -#define _STRINGIZE(x) __STRINGIZE(x) - -/** Build application version string (i.e.: "1.7.0") */ -#define MAKE_VERS(maj,min,rev) _STRINGIZE(maj) "." _STRINGIZE(min) "." _STRINGIZE(rev) VERS_LETTER VERS_DBG -#ifdef _SNAPSHOT - #define VERS_TAG "snapshot" " " __DATE__ " " __TIME__ " " VERS_LETTER " " VERS_DBG -#else - #define VERS_TAG MAKE_VERS(VERS_MAJOR,VERS_MINOR,VERS_REV) -#endif - -/** Build application version string suitable for MS windows resource files (i.e.: "1, 7, 0, 1") */ -#define MAKE_RCVERS(maj,min,rev,bld) _STRINGIZE(maj) ", " _STRINGIZE(min) ", " _STRINGIZE(rev) ", " _STRINGIZE(bld) -#define RCVERSION_TAG MAKE_VERS(VERS_MAJOR,VERS_MINOR,VERS_REV) - -/** The revision string (contains VERS_TAG) */ -extern const char vers_tag[]; - -/** Sequential build number (contains VERS_BUILD) */ -extern const int vers_build_nr; -//extern const char vers_build_str[]; - -/** Hostname of the machine used to build this binary (contains VERS_HOST) */ -extern const char vers_host[]; - -#endif /* DEVLIB_VERSTAG_H */ diff --git a/bertos/fs/battfs.c b/bertos/fs/battfs.c index 6d6b92d8..74c5ac5f 100644 --- a/bertos/fs/battfs.c +++ b/bertos/fs/battfs.c @@ -40,9 +40,6 @@ #include "battfs.h" -#warning TODO:Fix and complete this module. - -#if 0 #include #include /* MIN, MAX */ #include /* cpu_to_xx */ @@ -828,5 +825,3 @@ bool battfs_writeTestBlock(struct BattFsSuper *disk, pgcnt_t page, inode_t inode return true; } - -#endif diff --git a/bertos/fs/battfs_test.c b/bertos/fs/battfs_test.c new file mode 100644 index 00000000..5b5c4631 --- /dev/null +++ b/bertos/fs/battfs_test.c @@ -0,0 +1,561 @@ +/** + * \file + * + * + * \brief BattFS Test. + * + * \version $Id$ + * \author Francesco Sacchi + */ + +#include + +#include +#include + +#include +#include +#include + +#define FILE_SIZE 32768 +#define PAGE_SIZE 128 +#define PAGE_COUNT FILE_SIZE / PAGE_SIZE + +#if UNIT_TEST + +FILE *fp; +const char test_filename[]="battfs_disk.bin"; + + +static bool disk_open(struct BattFsSuper *d) +{ + fp = fopen(test_filename, "r+b"); + ASSERT(fp); + fseek(fp, 0, SEEK_END); + d->page_size = PAGE_SIZE; + d->page_count = ftell(fp) / d->page_size; + d->page_array = malloc(d->page_count * sizeof(pgcnt_t)); + //TRACEMSG("page_size:%d, page_count:%d\n", d->page_size, d->page_count); + return (fp && d->page_array); +} + +static size_t disk_page_read(struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, void *buf, size_t size) +{ + //TRACEMSG("page:%d, addr:%d, size:%d\n", page, addr, size); + fseek(fp, page * d->page_size + addr, SEEK_SET); + return fread(buf, 1, size, fp); +} + +static size_t disk_page_write(struct BattFsSuper *d, pgcnt_t page, pgaddr_t addr, const void *buf, size_t size) +{ + //TRACEMSG("page:%d, addr:%d, size:%d\n", page, addr, size); + fseek(fp, page * d->page_size + addr, SEEK_SET); + return fwrite(buf, 1, size, fp); +} + +static bool disk_page_erase(struct BattFsSuper *d, pgcnt_t page) +{ + //TRACEMSG("page:%d\n", page); + fseek(fp, page * d->page_size, SEEK_SET); + + for (int i = 0; i < d->page_size; i++) + if (fputc(0xff, fp) == EOF) + return false; + return true; +} + +static bool disk_close(struct BattFsSuper *d) +{ + //TRACE; + free(d->page_array); + return (fclose(fp) != EOF); +} + +static void testCheck(BattFsSuper *disk, pgcnt_t *reference) +{ + ASSERT(battfs_init(disk)); + + for (int i = 0; i < disk->page_count; i++) + { + if (disk->page_array[i] != reference[i]) + { + kprintf("Error at addr %d: page_array read", i); + for (pgcnt_t i = 0; i < disk->page_count; i++) + { + if (!(i % 16)) + kputchar('\n'); + kprintf("%04d ", disk->page_array[i]); + } + kputchar('\n'); + kprintf("Expected:"); + for (pgcnt_t i = 0; i < disk->page_count; i++) + { + if (!(i % 16)) + kputchar('\n'); + kprintf("%04d ", reference[i]); + } + kputchar('\n'); + battfs_close(disk); + exit(2); + } + } + battfs_close(disk); +} + +static void test1(BattFsSuper *disk) +{ + pgcnt_t ref[PAGE_COUNT]; + kprintf("Test1: disk new\n"); + + FILE *fpt = fopen(test_filename, "w+"); + + for (int i = 0; i < FILE_SIZE; i++) + fputc(0xff, fpt); + fclose(fpt); + for (int i = 0; i < PAGE_COUNT; i++) + ref[i] = PAGE_COUNT - i - 1; + + testCheck(disk, ref); + kprintf("Test1: passed\n"); +} + +static void test2(BattFsSuper *disk) +{ + pgcnt_t ref[PAGE_COUNT]; + kprintf("Test2: disk full with 1 contiguos file\n"); + + + fp = fopen(test_filename, "w+"); + + for (int i = 0; i < PAGE_COUNT; i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); + ref[i] = i; + } + fclose(fp); + + testCheck(disk, ref); + kprintf("Test2: passed\n"); +} + + +static void test3(BattFsSuper *disk) +{ + pgcnt_t ref[PAGE_COUNT]; + kprintf("Test3: disk half full with 1 contiguos file, rest unformatted\n"); + + + fp = fopen(test_filename, "w+"); + + for (int i = 0; i < PAGE_COUNT / 2; i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); + ref[i] = i; + } + fseek(fp, FILE_SIZE / 2, SEEK_SET); + for (int i = FILE_SIZE / 2; i < FILE_SIZE; i++) + fputc(0xff, fp); + fclose(fp); + + for (int i = PAGE_COUNT / 2; i < PAGE_COUNT; i++) + { + ref[i] = PAGE_COUNT + PAGE_COUNT / 2 - i - 1; + } + + + testCheck(disk, ref); + kprintf("Test3: passed\n"); +} + +static void test4(BattFsSuper *disk) +{ + pgcnt_t ref[PAGE_COUNT]; + kprintf("Test4: disk half full with 1 contiguos file, rest marked free\n"); + + + fp = fopen(test_filename, "w+"); + + for (int i = 0; i < PAGE_COUNT / 2; i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); + ref[i] = i; + } + for (int i = PAGE_COUNT / 2; i < PAGE_COUNT; i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, i); + ref[i] = i; + } + fclose(fp); + + + testCheck(disk, ref); + kprintf("Test4: passed\n"); +} + +static void test5(BattFsSuper *disk) +{ + pgcnt_t ref[PAGE_COUNT]; + kprintf("Test5: disk 1/3 full with 1 contiguos file, 1/3 marked free, rest unformatted\n"); + + + fp = fopen(test_filename, "w+"); + + for (int i = 0; i < FILE_SIZE; i++) + fputc(0xff, fp); + + for (int i = 0; i < PAGE_COUNT / 3; i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, MARK_PAGE_VALID); + ref[i] = i; + } + for (int i = PAGE_COUNT / 3; i < 2 * (PAGE_COUNT / 3); i++) + { + battfs_writeTestBlock(disk, i, 0, 0, 0, i, i); + ref[i + PAGE_COUNT / 3 + 1] = i; + } + fclose(fp); + + for (int i = PAGE_COUNT / 3; i < 2 * (PAGE_COUNT / 3) + 1; i++) + ref[i] = PAGE_COUNT + PAGE_COUNT / 3 - i - 1; + + testCheck(disk, ref); + kprintf("Test5: passed\n"); +} + +static void test6(BattFsSuper *disk) +{ + pgcnt_t ref[4]; + kprintf("Test6: 1 file with 1 old seq num, 1 free block\n"); + + + fp = fopen(test_filename, "w+"); + + battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 1, 0, 0, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, 0, 1, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, 0, 0, 0, 0, 123); + + fclose(fp); + ref[0] = 0; + ref[1] = 2; + ref[2] = 3; + ref[3] = 1; + + testCheck(disk, ref); + kprintf("Test6: passed\n"); +} + +static void test7(BattFsSuper *disk) +{ + pgcnt_t ref[4]; + kprintf("Test7: 1 file with 1 old seq num, 1 free block\n"); + + + fp = fopen(test_filename, "w+"); + + battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 1, 0, 1, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, 0, 0, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, 0, 0, 0, 0, 123); + + fclose(fp); + ref[0] = 0; + ref[1] = 1; + ref[2] = 3; + ref[3] = 2; + + testCheck(disk, ref); + kprintf("Test7: passed\n"); +} + +static void test8(BattFsSuper *disk) +{ + pgcnt_t ref[4]; + kprintf("Test8: 1 file with 1 old seq num, 1 free block\n"); + + + fp = fopen(test_filename, "w+"); + + battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, 1235); + battfs_writeTestBlock(disk, 1, 0, 0, 0, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, 0, 1, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, 0, 0, 0, 1, MARK_PAGE_VALID); + + + fclose(fp); + ref[0] = 1; + ref[1] = 2; + ref[2] = 0; + ref[3] = 3; + + testCheck(disk, ref); + kprintf("Test8: passed\n"); +} + +static void test9(BattFsSuper *disk) +{ + pgcnt_t ref[8]; + kprintf("Test9: 2 file with old seq num, 2 free block\n"); + + + fp = fopen(test_filename, "w+"); + + battfs_writeTestBlock(disk, 0, 0, 0, 0, 0, 1235); + battfs_writeTestBlock(disk, 1, 0, 0, 0, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, 0, 3, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, 0, 0, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 4, 0, 0, 0, 0, 1236); + battfs_writeTestBlock(disk, 5, 4, 0, 0, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 6, 4, 1, 0, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 7, 4, 0, 0, 1, MARK_PAGE_VALID); + + + fclose(fp); + ref[0] = 1; + ref[1] = 3; + ref[2] = 5; + ref[3] = 6; + ref[4] = 0; + ref[5] = 4; + ref[6] = 2; + ref[7] = 7; + + testCheck(disk, ref); + kprintf("Test9: passed\n"); +} + +static void test10(BattFsSuper *disk) +{ + BattFS fd1; + BattFS fd2; + kprintf("Test10: open file test, inode 0 and inode 4\n"); + + fp = fopen(test_filename, "w+"); + + unsigned int PAGE_FILL = 116; + unsigned int INODE = 0; + unsigned int INODE2 = 4; + unsigned int INEXISTENT_INODE = 123; + unsigned int MODE = 0; + + battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); + battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 4, INODE2, 0, PAGE_FILL, 0, 1236); + battfs_writeTestBlock(disk, 5, INODE2, 0, PAGE_FILL, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 6, INODE2, 1, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 7, INODE2, 0, PAGE_FILL, 1, MARK_PAGE_VALID); + + fclose(fp); + + ASSERT(battfs_init(disk)); + ASSERT(!battfs_fileExists(disk, INEXISTENT_INODE)); + + ASSERT(battfs_fileExists(disk, INODE)); + ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); + ASSERT(fd1.fd.size == PAGE_FILL * 2); + ASSERT(fd1.fd.seek_pos == 0); + ASSERT(fd1.mode == MODE); + ASSERT(fd1.inode == INODE); + ASSERT(fd1.start == &disk->page_array[0]); + ASSERT(fd1.disk == disk); + ASSERT(LIST_HEAD(&disk->file_opened_list) == &fd1.link); + + ASSERT(kfile_reopen(&fd1.fd) == &fd1.fd); + ASSERT(fd1.fd.size == PAGE_FILL * 2); + ASSERT(fd1.fd.seek_pos == 0); + ASSERT(fd1.mode == MODE); + ASSERT(fd1.inode == INODE); + ASSERT(fd1.start == &disk->page_array[0]); + ASSERT(fd1.disk == disk); + ASSERT(LIST_HEAD(&disk->file_opened_list) == &fd1.link); + + ASSERT(battfs_fileExists(disk, INODE2)); + ASSERT(battfs_fileopen(disk, &fd2, INODE2, MODE)); + ASSERT(fd2.fd.size == PAGE_FILL * 2); + ASSERT(fd2.fd.seek_pos == 0); + ASSERT(fd2.mode == MODE); + ASSERT(fd2.inode == INODE2); + ASSERT(fd2.start == &disk->page_array[2]); + ASSERT(fd2.disk == disk); + ASSERT(LIST_HEAD(&disk->file_opened_list)->succ == &fd2.link); + + ASSERT(kfile_close(&fd1.fd) == 0); + ASSERT(kfile_close(&fd2.fd) == 0); + ASSERT(LIST_EMPTY(&disk->file_opened_list)); + ASSERT(battfs_close(disk)); + + kprintf("Test10: passed\n"); +} + +static void test11(BattFsSuper *disk) +{ + BattFS fd1; + uint8_t buf[16]; + + kprintf("Test11: read file test\n"); + + fp = fopen(test_filename, "w+"); + + unsigned int PAGE_FILL = 116; + unsigned int INODE = 0; + unsigned int INODE2 = 4; + unsigned int MODE = 0; + + battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); + battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 4, INODE2, 0, PAGE_FILL, 0, 1236); + battfs_writeTestBlock(disk, 5, INODE2, 0, PAGE_FILL, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 6, INODE2, 1, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 7, INODE2, 0, PAGE_FILL, 1, MARK_PAGE_VALID); + + fclose(fp); + + ASSERT(battfs_init(disk)); + ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); + ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); + ASSERT(fd1.fd.seek_pos == sizeof(buf)); + for (size_t i = 0; i < sizeof(buf); i++) + ASSERT(buf[i] == 0); + + ASSERT(kfile_close(&fd1.fd) == 0); + ASSERT(battfs_close(disk)); + + kprintf("Test11: passed\n"); +} + +static void test12(BattFsSuper *disk) +{ + BattFS fd1; + + kprintf("Test12: read file test across page boundary and seek test\n"); + + fp = fopen(test_filename, "w+"); + + const unsigned int PAGE_FILL = 116; + unsigned int INODE = 0; + unsigned int MODE = 0; + uint8_t buf[PAGE_FILL + 10]; + + battfs_writeTestBlock(disk, 0, 123, 0, PAGE_FILL, 0, 1235); + battfs_writeTestBlock(disk, 1, INODE, 0, PAGE_FILL, 0, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 2, INODE, 3, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 3, INODE, 0, PAGE_FILL, 1, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 4, INODE, 0, PAGE_FILL, 0, 1236); + battfs_writeTestBlock(disk, 5, INODE, 0, PAGE_FILL, 2, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 6, INODE, 1, PAGE_FILL, 3, MARK_PAGE_VALID); + battfs_writeTestBlock(disk, 7, INODE, 0, PAGE_FILL, 3, MARK_PAGE_VALID); + + fclose(fp); + + ASSERT(battfs_init(disk)); + ASSERT(battfs_fileopen(disk, &fd1, INODE, MODE)); + + ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); + ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf)); + for (size_t i = 0; i < sizeof(buf); i++) + ASSERT(buf[i] == 0); + + ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); + ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf) * 2); + for (size_t i = 0; i < sizeof(buf); i++) + ASSERT(buf[i] == 0); + + ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == sizeof(buf)); + ASSERT(fd1.fd.seek_pos == (kfile_off_t)sizeof(buf) * 3); + for (size_t i = 0; i < sizeof(buf); i++) + ASSERT(buf[i] == 0); + + ASSERT(kfile_read(&fd1.fd, buf, sizeof(buf)) == 86); + ASSERT(fd1.fd.seek_pos == (kfile_off_t)fd1.fd.size); + for (size_t i = 0; i < 86; i++) + ASSERT(buf[i] == 0); + + ASSERT(kfile_seek(&fd1.fd, 0, KSM_SEEK_SET) == 0); + ASSERT(fd1.fd.seek_pos == 0); + + ASSERT(kfile_seek(&fd1.fd, 0, KSM_SEEK_END) == (kfile_off_t)fd1.fd.size); + ASSERT(fd1.fd.seek_pos = (kfile_off_t)fd1.fd.size); + + ASSERT(kfile_close(&fd1.fd) == 0); + ASSERT(battfs_close(disk)); + + kprintf("Test12: passed\n"); +} + + +int battfs_testRun(void) +{ + BattFsSuper disk; + + disk.open = disk_open; + disk.read = disk_page_read; + disk.write = disk_page_write; + disk.erase = disk_page_erase; + disk.close = disk_close; + test1(&disk); + test2(&disk); + test3(&disk); + test4(&disk); + test5(&disk); + test6(&disk); + test7(&disk); + test8(&disk); + test9(&disk); + test10(&disk); + test11(&disk); + test12(&disk); + kprintf("All tests passed!\n"); + + return 0; +} + +int battfs_testSetup(void) +{ + return 0; +} + +int battfs_testTearDown(void) +{ + return 0; +} + +TEST_MAIN(battfs) + +#include +#include +#include +#include +#include + +#endif // _TEST