Add tests for file IO API
This commit is contained in:
98
tests/file/test_file.c
Normal file
98
tests/file/test_file.c
Normal file
@@ -0,0 +1,98 @@
|
||||
// vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
#include "test_file.h"
|
||||
|
||||
#define DST_CAPACITY 5
|
||||
wapp_intern Str8RO test_filename = wapp_str8_lit_ro_initialiser_list("wapptest.bin");
|
||||
wapp_intern WFile *test_fp = NULL;
|
||||
wapp_intern I32Array src_array1 = wapp_array(i32, 0, 1, 2, 3, 4);
|
||||
wapp_intern I32Array src_array2 = wapp_array(i32, 5, 6, 7, 8, 9);
|
||||
wapp_intern I32Array src_array3 = wapp_array(i32, 10, 11, 12, 13, 14);
|
||||
wapp_intern I32Array dst_array = wapp_array_with_capacity(i32, DST_CAPACITY, false);
|
||||
wapp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
||||
|
||||
TestFuncResult test_wapp_file_open(void) {
|
||||
test_fp = wapp_file_open(&test_filename, WAPP_FA_MODE_WB_EX);
|
||||
return wapp_tester_result(test_fp != NULL);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_get_current_position(void) {
|
||||
u64 pos = wapp_file_get_current_position(test_fp);
|
||||
return wapp_tester_result(pos == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_seek(void) {
|
||||
wapp_file_write_array((GenericArray)src_array1, test_fp, wapp_array_count(src_array1));
|
||||
|
||||
i32 seek_result = wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
b8 result = seek_result == 0;
|
||||
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_get_length(void) {
|
||||
i64 length = wapp_file_get_length(test_fp);
|
||||
return wapp_tester_result(length == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1)));
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_read(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
||||
u64 count = wapp_file_read((void *)dst_buf, test_fp, byte_count);
|
||||
b8 result = count == byte_count;
|
||||
|
||||
for (u64 i = 0; i < DST_CAPACITY; ++i) {
|
||||
result = result && (dst_buf[i] == *wapp_array_get(i32, src_array1, i));
|
||||
}
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_write(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
|
||||
u64 expected_count = wapp_array_count(src_array2) * wapp_array_item_size(src_array2);
|
||||
u64 count = wapp_file_write((void *)src_array2, test_fp, expected_count);
|
||||
|
||||
return wapp_tester_result(count == expected_count);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_read_array(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
u64 count = wapp_file_read_array((GenericArray)dst_array, test_fp, wapp_array_count(src_array1));
|
||||
b8 result = count == wapp_array_count(src_array1) &&
|
||||
wapp_array_count(dst_array) == wapp_array_count(src_array1);
|
||||
|
||||
for (u64 i = 0; i < wapp_array_count(dst_array); ++i) {
|
||||
result = result && (*wapp_array_get(i32, dst_array, i) == *wapp_array_get(i32, src_array1, i));
|
||||
}
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_write_array(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
|
||||
u64 count = wapp_file_write_array((GenericArray)src_array3, test_fp, wapp_array_count(src_array3));
|
||||
|
||||
return wapp_tester_result(count == wapp_array_count(src_array3));
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_flush(void) {
|
||||
i32 flush_result = wapp_file_flush(test_fp);
|
||||
return wapp_tester_result(flush_result == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_close(void) {
|
||||
i32 close_result = wapp_file_close(test_fp);
|
||||
return wapp_tester_result(close_result == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_remove(void) {
|
||||
i32 remove_result = wapp_file_remove(&test_filename);
|
||||
return wapp_tester_result(remove_result == 0);
|
||||
}
|
||||
102
tests/file/test_file.cc
Normal file
102
tests/file/test_file.cc
Normal file
@@ -0,0 +1,102 @@
|
||||
// vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
#include "test_file.h"
|
||||
|
||||
#define DST_CAPACITY 5
|
||||
wapp_intern Str8RO test_filename = wapp_str8_lit_ro_initialiser_list("wapptest.bin");
|
||||
wapp_intern WFile *test_fp = NULL;
|
||||
wapp_intern i32 dst_buf[DST_CAPACITY] = {0};
|
||||
wapp_intern I32Array src_array1;
|
||||
wapp_intern I32Array src_array2;
|
||||
wapp_intern I32Array src_array3;
|
||||
wapp_intern I32Array dst_array ;
|
||||
|
||||
TestFuncResult test_wapp_file_open(void) {
|
||||
src_array1 = wapp_array(i32, 0, 1, 2, 3, 4);
|
||||
src_array2 = wapp_array(i32, 5, 6, 7, 8, 9);
|
||||
src_array3 = wapp_array(i32, 10, 11, 12, 13, 14);
|
||||
dst_array = wapp_array_with_capacity(i32, DST_CAPACITY, false);
|
||||
test_fp = wapp_file_open(&test_filename, WAPP_FA_MODE_WB_EX);
|
||||
return wapp_tester_result(test_fp != NULL);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_get_current_position(void) {
|
||||
u64 pos = wapp_file_get_current_position(test_fp);
|
||||
return wapp_tester_result(pos == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_seek(void) {
|
||||
wapp_file_write_array((GenericArray)src_array1, test_fp, wapp_array_count(src_array1));
|
||||
|
||||
i32 seek_result = wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
b8 result = seek_result == 0;
|
||||
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_get_length(void) {
|
||||
i64 length = wapp_file_get_length(test_fp);
|
||||
return wapp_tester_result(length == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1)));
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_read(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
u64 byte_count = DST_CAPACITY * sizeof(i32);
|
||||
u64 count = wapp_file_read((void *)dst_buf, test_fp, byte_count);
|
||||
b8 result = count == byte_count;
|
||||
|
||||
for (u64 i = 0; i < DST_CAPACITY; ++i) {
|
||||
result = result && (dst_buf[i] == *wapp_array_get(i32, src_array1, i));
|
||||
}
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_write(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
|
||||
u64 expected_count = wapp_array_count(src_array2) * wapp_array_item_size(src_array2);
|
||||
u64 count = wapp_file_write((void *)src_array2, test_fp, expected_count);
|
||||
|
||||
return wapp_tester_result(count == expected_count);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_read_array(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_START);
|
||||
|
||||
u64 count = wapp_file_read_array((GenericArray)dst_array, test_fp, wapp_array_count(src_array1));
|
||||
b8 result = count == wapp_array_count(src_array1) &&
|
||||
wapp_array_count(dst_array) == wapp_array_count(src_array1);
|
||||
|
||||
for (u64 i = 0; i < wapp_array_count(dst_array); ++i) {
|
||||
result = result && (*wapp_array_get(i32, dst_array, i) == *wapp_array_get(i32, src_array1, i));
|
||||
}
|
||||
|
||||
return wapp_tester_result(result);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_write_array(void) {
|
||||
wapp_file_seek(test_fp, 0, WAPP_SEEK_END);
|
||||
|
||||
u64 count = wapp_file_write_array((GenericArray)src_array3, test_fp, wapp_array_count(src_array3));
|
||||
|
||||
return wapp_tester_result(count == wapp_array_count(src_array3));
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_flush(void) {
|
||||
i32 flush_result = wapp_file_flush(test_fp);
|
||||
return wapp_tester_result(flush_result == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_close(void) {
|
||||
i32 close_result = wapp_file_close(test_fp);
|
||||
return wapp_tester_result(close_result == 0);
|
||||
}
|
||||
|
||||
TestFuncResult test_wapp_file_remove(void) {
|
||||
i32 remove_result = wapp_file_remove(&test_filename);
|
||||
return wapp_tester_result(remove_result == 0);
|
||||
}
|
||||
20
tests/file/test_file.h
Normal file
20
tests/file/test_file.h
Normal file
@@ -0,0 +1,20 @@
|
||||
// vim:fileencoding=utf-8:foldmethod=marker
|
||||
|
||||
#ifndef TEST_FILE_H
|
||||
#define TEST_FILE_H
|
||||
|
||||
#include "wapp.h"
|
||||
|
||||
TestFuncResult test_wapp_file_open(void);
|
||||
TestFuncResult test_wapp_file_get_current_position(void);
|
||||
TestFuncResult test_wapp_file_seek(void);
|
||||
TestFuncResult test_wapp_file_get_length(void);
|
||||
TestFuncResult test_wapp_file_read(void);
|
||||
TestFuncResult test_wapp_file_write(void);
|
||||
TestFuncResult test_wapp_file_read_array(void);
|
||||
TestFuncResult test_wapp_file_write_array(void);
|
||||
TestFuncResult test_wapp_file_flush(void);
|
||||
TestFuncResult test_wapp_file_close(void);
|
||||
TestFuncResult test_wapp_file_remove(void);
|
||||
|
||||
#endif // !TEST_FILE_H
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "test_str8_array.h"
|
||||
#include "test_i32_array.h"
|
||||
#include "test_cpath.h"
|
||||
#include "test_file.h"
|
||||
#include "test_shell_commander.h"
|
||||
#include "wapp.h"
|
||||
#include <stdlib.h>
|
||||
@@ -70,6 +71,17 @@ int main(void) {
|
||||
test_cpath_join_path,
|
||||
test_cpath_dirname,
|
||||
test_cpath_dirup,
|
||||
test_wapp_file_open,
|
||||
test_wapp_file_get_current_position,
|
||||
test_wapp_file_seek,
|
||||
test_wapp_file_get_length,
|
||||
test_wapp_file_read,
|
||||
test_wapp_file_write,
|
||||
test_wapp_file_read_array,
|
||||
test_wapp_file_write_array,
|
||||
test_wapp_file_flush,
|
||||
test_wapp_file_close,
|
||||
test_wapp_file_remove,
|
||||
test_commander_cmd_success,
|
||||
test_commander_cmd_failure,
|
||||
test_commander_cmd_out_buf_success,
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
#include "test_str8_array.h"
|
||||
#include "test_i32_array.h"
|
||||
#include "test_cpath.h"
|
||||
#include "test_file.h"
|
||||
#include "test_shell_commander.h"
|
||||
#include "wapp.h"
|
||||
#include <stdlib.h>
|
||||
@@ -70,6 +71,17 @@ int main(void) {
|
||||
test_cpath_join_path,
|
||||
test_cpath_dirname,
|
||||
test_cpath_dirup,
|
||||
test_wapp_file_open,
|
||||
test_wapp_file_get_current_position,
|
||||
test_wapp_file_seek,
|
||||
test_wapp_file_get_length,
|
||||
test_wapp_file_read,
|
||||
test_wapp_file_write,
|
||||
test_wapp_file_read_array,
|
||||
test_wapp_file_write_array,
|
||||
test_wapp_file_flush,
|
||||
test_wapp_file_close,
|
||||
test_wapp_file_remove,
|
||||
test_commander_cmd_success,
|
||||
test_commander_cmd_failure,
|
||||
test_commander_cmd_out_buf_success,
|
||||
|
||||
Reference in New Issue
Block a user