#include "test_cpath.h" #include "wapp.h" #include #include #include #define MAIN_BUF_SIZE 4096 #define TMP_BUF_SIZE 1024 TestFuncResult test_cpath_join_path(void) { bool result; Str8 expected = wapp_str8_buf(MAIN_BUF_SIZE); Str8 out = wapp_str8_buf(MAIN_BUF_SIZE); Str8 tmp = wapp_str8_buf(TMP_BUF_SIZE); wapp_str8_format(&expected, "%chome%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP, PATH_SEP); wapp_str8_format(&tmp, "%c", PATH_SEP); DBL_LIST(Str8) parts = {0}; wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_str8(tmp)); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("home")); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("abdelrahman")); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("Documents")); wapp_cpath_join_path(&out, &parts); result = wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_front(Str8, &parts); wapp_str8_format(&expected, "home%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_str8_concat_capped(&tmp, &wapp_str8_lit_ro("home")); wapp_dbl_list_pop_front(Str8, &parts); wapp_dbl_list_push_front(&parts, &wapp_str8_node_from_str8(tmp)); wapp_str8_format(&expected, "%chome%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP, PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_str8_format(&tmp, "home%c", PATH_SEP); wapp_dbl_list_pop_front(Str8, &parts); wapp_dbl_list_push_front(&parts, &wapp_str8_node_from_cstr("home")); wapp_str8_format(&expected, "home%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_empty(&parts); wapp_str8_format(&tmp, "%chome", PATH_SEP); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_str8(tmp)); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("")); wapp_str8_format(&expected, "%chome", PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_front(Str8, &parts); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("")); wapp_str8_format(&expected, "%s", ""); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); wapp_dbl_list_pop_back(Str8, &parts); wapp_dbl_list_push_back(&parts, &wapp_str8_node_from_cstr("home")); wapp_str8_copy_cstr_capped(&expected, "home"); wapp_cpath_join_path(&out, &parts); result = result && wapp_str8_equal(&out, &expected); return wapp_tester_result(result); } TestFuncResult test_cpath_dirname(void) { Allocator arena = wapp_mem_arena_allocator_init(MB(8)); if (wapp_mem_allocator_invalid(&arena)) { return wapp_tester_result(false); } bool result; Str8 *output = NULL; Str8 expected = wapp_str8_buf(MAIN_BUF_SIZE); Str8 tmp = wapp_str8_buf(TMP_BUF_SIZE); // CASE 1 wapp_str8_format(&tmp, "%c", PATH_SEP); wapp_str8_format(&expected, "%c", PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = output != NULL && wapp_str8_equal(output, &expected); // CASE 2 wapp_str8_format(&expected, "%s", "."); output = wapp_cpath_dirname(&arena, &wapp_str8_lit("home")); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 3 output = wapp_cpath_dirname(&arena, &wapp_str8_lit("")); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 4 wapp_str8_format(&tmp, "%chome%ctest", PATH_SEP, PATH_SEP); wapp_str8_format(&expected, "%chome", PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 5 wapp_str8_format(&tmp, "%chome%ctest%c", PATH_SEP, PATH_SEP, PATH_SEP); wapp_str8_format(&expected, "%chome", PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != NULL && wapp_str8_equal(output, &expected); wapp_mem_arena_allocator_destroy(&arena); return wapp_tester_result(result); } TestFuncResult test_cpath_dirup(void) { Allocator arena = wapp_mem_arena_allocator_init(MB(8)); if (wapp_mem_allocator_invalid(&arena)) { return wapp_tester_result(false); } bool result; Str8 *output = NULL; Str8 expected = wapp_str8_buf(MAIN_BUF_SIZE); Str8 tmp = wapp_str8_buf(TMP_BUF_SIZE); // CASE 1 wapp_str8_format(&tmp, "%c", PATH_SEP); wapp_str8_format(&expected, "%c", PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = output != NULL && wapp_str8_equal(output, &expected); // CASE 2 wapp_str8_format(&tmp, "%chome%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP, PATH_SEP); wapp_str8_format(&expected, "%c", PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 3 wapp_str8_format(&tmp, "home%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP); wapp_str8_copy_cstr_capped(&expected, "."); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 4 wapp_str8_format(&tmp, "%chome%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP, PATH_SEP); wapp_str8_format(&expected, "%chome", PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != NULL && wapp_str8_equal(output, &expected); // CASE 5 wapp_str8_format(&tmp, "home%cabdelrahman%cDocuments", PATH_SEP, PATH_SEP); wapp_str8_copy_cstr_capped(&expected, "home"); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != NULL && wapp_str8_equal(output, &expected); wapp_mem_arena_allocator_destroy(&arena); return wapp_tester_result(result); }