X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=kern%2Fkfile.c;h=1ec3266488e4970d1ec611c4d8e6594d4cd8a5b1;hb=2535cb94ec2183791128f8bbd109ca69a960cf78;hp=28adc32a95a0bfd8ead1981c5fae002f031269b9;hpb=0cd848e854b65d37d71d83a833042294f9b874fd;p=bertos.git diff --git a/kern/kfile.c b/kern/kfile.c index 28adc32a..1ec32664 100644 --- a/kern/kfile.c +++ b/kern/kfile.c @@ -218,203 +218,4 @@ struct KFile * kfile_genericReopen(struct KFile *fd) return fd; } -#if CONFIG_TEST -/** - * KFile read/write subtest. - * Try to write/read in the same \a f file location \a size bytes. - * \return true if all is ok, false otherwise - * \note Restore file position at exit (if no error) - * \note Test buffer \a buf must be filled with - * the following statement: - *
- * buf[i] = i & 0xff
- * 
- */ -static bool kfile_rwTest(KFile *f, uint8_t *buf, size_t size) -{ - /* - * Write test buffer - */ - if (kfile_write(f, buf, size) != size) - return false; - - kfile_seek(f, -(kfile_off_t)size, KSM_SEEK_CUR); - - /* - * Reset test buffer - */ - memset(buf, 0, size); - - /* - * Read file in test buffer - */ - if (kfile_read(f, buf, size) != size) - return false; - kfile_seek(f, -(kfile_off_t)size, KSM_SEEK_CUR); - - /* - * Check test result - */ - for (size_t i = 0; i < size; i++) - if (buf[i] != (i & 0xff)) - return false; - - return true; -} - -/** - * KFile read/write test. - * This function write and read \a test_buf long \a size - * on \a fd handler. - * \a save_buf can be NULL or a buffer where to save previous file content. - */ -bool kfile_test(KFile *fd, uint8_t *test_buf, uint8_t *save_buf, size_t size) -{ - /* - * Part of test buf size that you would write. - * This var is used in test 3 to check kfile_write - * when writing beyond filesize limit. - */ - kfile_off_t len = size / 2; - - - /* Fill test buffer */ - for (size_t i = 0; i < size; i++) - test_buf[i] = (i & 0xff); - - /* - * If necessary, user can save content, - * for later restore. - */ - if (save_buf) - { - kfile_read(fd, save_buf, size); - kprintf("Saved content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + size); - } - - /* TEST 1 BEGIN. */ - kprintf("Test 1: write from pos 0 to [%lu]\n", size); - - /* - * Seek to addr 0. - */ - if (kfile_seek(fd, 0, KSM_SEEK_SET) != 0) - goto kfile_test_end; - - /* - * Test read/write to address 0..size - */ - if (!kfile_rwTest(fd, test_buf, size)) - goto kfile_test_end; - - kprintf("Test 1: ok!\n"); - - /* - * Restore previous read content. - */ - if (save_buf) - { - kfile_seek(fd, 0, KSM_SEEK_SET); - - if (kfile_write(fd, save_buf, size) != size) - goto kfile_test_end; - - kprintf("Restore content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + size); - } - /* TEST 1 END. */ - - /* TEST 2 BEGIN. */ - kprintf("Test 2: write from pos [%lu] to [%lu]\n", fd->size/2 , fd->size/2 + size); - - /* - * Go to half test size. - */ - kfile_seek(fd, (fd->size / 2), KSM_SEEK_SET); - - /* - * If necessary, user can save content - * for later restore. - */ - if (save_buf) - { - kfile_read(fd, save_buf, size); - kfile_seek(fd, -(kfile_off_t)size, KSM_SEEK_CUR); - kprintf("Saved content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + size); - } - - /* - * Test read/write to address filesize/2 ... filesize/2 + size - */ - if (!kfile_rwTest(fd, test_buf, size)) - goto kfile_test_end; - - kprintf("Test 2: ok!\n"); - - /* - * Restore previous content. - */ - if (save_buf) - { - kfile_seek(fd, -(kfile_off_t)size, KSM_SEEK_CUR); - - if (kfile_write(fd, save_buf, size) != size) - goto kfile_test_end; - - kprintf("Restore content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + size); - } - - /* TEST 2 END. */ - - /* TEST 3 BEGIN. */ - kprintf("Test 3: write outside of fd->size limit [%lu]\n", fd->size); - kprintf("This test should FAIL!, you must see an assertion fail message.\n"); - - /* - * Go to the Flash end - */ - kfile_seek(fd, -len, KSM_SEEK_END); - - /* - * If necessary, user can save content, - * for later restore. - */ - if (save_buf) - { - kfile_read(fd, save_buf, len); - kfile_seek(fd, -len, KSM_SEEK_CUR); - kprintf("Saved content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + len); - } - - /* - * Test read/write to address (filesize - size) ... filesize - */ - if (kfile_rwTest(fd, test_buf, size)) - goto kfile_test_end; - - kprintf("Test 3: ok!\n"); - - /* - * Restore previous read content - */ - if (save_buf) - { - kfile_seek(fd, -len, KSM_SEEK_END); - - if (kfile_write(fd, save_buf, len) != len) - goto kfile_test_end; - - kprintf("Restore content..form [%lu] to [%lu]\n", fd->seek_pos, fd->seek_pos + len); - } - - /* TEST 3 END. */ - - kfile_close(fd); - return true; - -kfile_test_end: - kfile_close(fd); - return false; -} - -#endif /* CONFIG_TEST */