// vim:fileencoding=utf-8:foldmethod=marker #include "test_file.h" #define DST_CAPACITY 5 wapp_intern Allocator arena = {}; wapp_intern Str8RO test_filename = wapp_str8_lit_ro_initialiser_list("wapptest.bin"); wapp_intern Str8RO new_filename = wapp_str8_lit_ro_initialiser_list("wapptest2.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) { arena = wapp_mem_arena_allocator_init(KiB(16)); 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(&arena, &test_filename, WAPP_ACCESS_WRITE_BIN_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)); i64 seek_result = wapp_file_seek(test_fp, 0, WAPP_SEEK_END); b8 result = seek_result == (i64)(wapp_array_count(src_array1) * wapp_array_item_size(src_array1)); 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_rename(void) { i32 rename_result = wapp_file_rename(&test_filename, &new_filename); return wapp_tester_result(rename_result == 0); } TestFuncResult test_wapp_file_remove(void) { i32 remove_result = wapp_file_remove(&new_filename); return wapp_tester_result(remove_result == 0); }