#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 = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 out = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE); wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8Format(&tmp, "%c", WAPP_PATH_SEP); WpStr8List parts = wapp_dbl_list(WpStr8); wapp_dbl_list_push_back(WpStr8, &parts, &tmp); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("home")); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("abdelrahman")); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("Documents")); wapp_cpath_join_path(&out, &parts); result = wpStr8Equal(&out, &expected); wapp_dbl_list_pop_front(WpStr8, &parts); wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpStr8ConcatCapped(&tmp, &wpStr8LitRo("home")); wapp_dbl_list_pop_front(WpStr8, &parts); wapp_dbl_list_push_front(WpStr8, &parts, &tmp); wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpStr8Format(&tmp, "home%c", WAPP_PATH_SEP); wapp_dbl_list_pop_front(WpStr8, &parts); wapp_dbl_list_push_front(WpStr8, &parts, &wpStr8Lit("home")); wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&out, &expected); wapp_dbl_list_empty(WpStr8, &parts); wpStr8Format(&tmp, "%chome", WAPP_PATH_SEP); wapp_dbl_list_push_back(WpStr8, &parts, &tmp); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("")); wpStr8Format(&expected, "%chome", WAPP_PATH_SEP); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&out, &expected); wapp_dbl_list_pop_front(WpStr8, &parts); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("")); wpStr8Format(&expected, "%s", ""); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&out, &expected); wapp_dbl_list_pop_back(WpStr8, &parts); wapp_dbl_list_push_back(WpStr8, &parts, &wpStr8Lit("home")); wpStr8CopyCstrCapped(&expected, "home"); wapp_cpath_join_path(&out, &parts); result = result && wpStr8Equal(&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 = NULL; WpStr8 expected = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE); // CASE 1 wpStr8Format(&tmp, "%c", WAPP_PATH_SEP); wpStr8Format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = output != NULL && wpStr8Equal(output, &expected); // CASE 2 wpStr8Format(&expected, "%s", "."); output = wapp_cpath_dirname(&arena, &wpStr8Lit("home")); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 3 output = wapp_cpath_dirname(&arena, &wpStr8Lit("")); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 4 wpStr8Format(&tmp, "%chome%ctest", WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8Format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 5 wpStr8Format(&tmp, "%chome%ctest%c", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8Format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirname(&arena, &tmp); result = result && output != NULL && wpStr8Equal(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 = NULL; WpStr8 expected = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE); // CASE 1 wpStr8Format(&tmp, "%c", WAPP_PATH_SEP); wpStr8Format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = output != NULL && wpStr8Equal(output, &expected); // CASE 2 wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8Format(&expected, "%c", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 3 wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8CopyCstrCapped(&expected, "."); output = wapp_cpath_dirup(&arena, &tmp, 3); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 4 wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8Format(&expected, "%chome", WAPP_PATH_SEP); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 5 wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WAPP_PATH_SEP, WAPP_PATH_SEP); wpStr8CopyCstrCapped(&expected, "home"); output = wapp_cpath_dirup(&arena, &tmp, 2); result = result && output != NULL && wpStr8Equal(output, &expected); wapp_mem_arena_allocator_destroy(&arena); return wpTesterResult(result); }