#include "test_cpath.h" #include "wapp.h" #include #include #define MAIN_BUF_SIZE 4096 #define TMP_BUF_SIZE 1024 WpTestFuncResult test_cpath_join_path(void) { b8 result; WpStr8 expected = wapp_str8_buf(MAIN_BUF_SIZE); WpStr8 out = wapp_str8_buf(MAIN_BUF_SIZE); WpStr8 tmp = wapp_str8_buf(TMP_BUF_SIZE); wapp_str8_format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_format(&tmp, "%c", WAPP_PATH_SEP); WpStr8List parts = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &parts, &tmp); WpStr8 home = wapp_str8_lit("home"); wapp_dbl_list_push_back(WpStr8, &parts, &home); WpStr8 user = wapp_str8_lit("abdelrahman"); wapp_dbl_list_push_back(WpStr8, &parts, &user); WpStr8 docs = wapp_str8_lit("Documents"); wapp_dbl_list_push_back(WpStr8, &parts, &docs); wapp_cpath_join_path(&out, &parts); result = wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_front(WpStr8, &parts); wapp_str8_format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); WpStr8RO str = wapp_str8_lit_ro("home"); wapp_str8_concat_capped(&tmp, &str); wapp_dbl_list_pop_front(WpStr8, &parts); wapp_dbl_list_push_front(WpStr8, &parts, &tmp); wapp_str8_format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_str8_format(&tmp, "home%c", WAPP_PATH_SEP); wapp_dbl_list_pop_front(WpStr8, &parts); WpStr8 home_2 = wapp_str8_lit("home"); wapp_dbl_list_push_front(WpStr8, &parts, &home_2); wapp_str8_format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_empty(WpStr8, &parts); wapp_str8_format(&tmp, "%chome", WAPP_PATH_SEP); wapp_dbl_list_push_back(WpStr8, &parts, &tmp); WpStr8 empty = wapp_str8_lit(""); wapp_dbl_list_push_back(WpStr8, &parts, &empty); wapp_str8_format(&expected, "%chome", WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_front(WpStr8, &parts); WpStr8 empty_2 = wapp_str8_lit(""); wapp_dbl_list_push_back(WpStr8, &parts, &empty_2); wapp_str8_format(&expected, "%s", ""); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_back(WpStr8, &parts); WpStr8 home_3 = wapp_str8_lit("home"); wapp_dbl_list_push_back(WpStr8, &parts, &home_3); wapp_str8_copy_cstr_capped(&expected, "home"); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); return wpTesterResult(result); } WpTestFuncResult test_cpath_dirname(void) { Allocator arena = wapp_mem_arena_allocator_init(MiB(8)); if (wapp_mem_allocator_invalid(&arena)) { return wpTesterResult(false); } b8 result; WpStr8 *output = nullptr; WpStr8 expected = wapp_str8_buf(MAIN_BUF_SIZE); WpStr8 tmp = wapp_str8_buf(TMP_BUF_SIZE); // CASE 1 wapp_str8_format(&tmp, "%c", WAPP_PATH_SEP); wapp_str8_format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = output != nullptr && wapp_str8_equal(output, &expected); // CASE 2 wapp_str8_format(&expected, "%s", "."); WpStr8 path = wapp_str8_lit("home"); output = wapp_cpath_dirname(&arena, &path); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 3 path = wapp_str8_lit(""); output = wapp_cpath_dirname(&arena, &path); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 4 wapp_str8_format(&tmp, "%chome%ctest", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 5 wapp_str8_format(&tmp, "%chome%ctest%c", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != nullptr && wapp_str8_equal(output, &expected); wapp_mem_arena_allocator_destroy(&arena); return wpTesterResult(result); } WpTestFuncResult test_cpath_dirup(void) { Allocator arena = wapp_mem_arena_allocator_init(MiB(8)); if (wapp_mem_allocator_invalid(&arena)) { return wpTesterResult(false); } b8 result; WpStr8 *output = nullptr; WpStr8 expected = wapp_str8_buf(MAIN_BUF_SIZE); WpStr8 tmp = wapp_str8_buf(TMP_BUF_SIZE); // CASE 1 wapp_str8_format(&tmp, "%c", WAPP_PATH_SEP); wapp_str8_format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = output != nullptr && wapp_str8_equal(output, &expected); // CASE 2 wapp_str8_format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 3 wapp_str8_format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_copy_cstr_capped(&expected, "."); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 4 wapp_str8_format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != nullptr && wapp_str8_equal(output, &expected); // CASE 5 wapp_str8_format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_str8_copy_cstr_capped(&expected, "home"); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != nullptr && wapp_str8_equal(output, &expected); wapp_mem_arena_allocator_destroy(&arena); return wpTesterResult(result); }