#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", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP); wpStr8Format(&tmp, "%c", WP_PATH_SEP); WpStr8List parts = wpDblList(WpStr8); wpDblListPushBack(WpStr8, &parts, &tmp); WpStr8 home = wpStr8Lit("home"); wpDblListPushBack(WpStr8, &parts, &home); WpStr8 user = wpStr8Lit("abdelrahman"); wpDblListPushBack(WpStr8, &parts, &user); WpStr8 docs = wpStr8Lit("Documents"); wpDblListPushBack(WpStr8, &parts, &docs); wpCpathJoinPath(&out, &parts); result = wpStr8Equal(&out, &expected); wpDblListPopFront(WpStr8, &parts); wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); WpStr8RO str = wpStr8LitRo("home"); wpStr8ConcatCapped(&tmp, &str); wpDblListPopFront(WpStr8, &parts); wpDblListPushFront(WpStr8, &parts, &tmp); wpStr8Format(&expected, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpStr8Format(&tmp, "home%c", WP_PATH_SEP); wpDblListPopFront(WpStr8, &parts); WpStr8 home_2 = wpStr8Lit("home"); wpDblListPushFront(WpStr8, &parts, &home_2); wpStr8Format(&expected, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpDblListEmpty(WpStr8, &parts); wpStr8Format(&tmp, "%chome", WP_PATH_SEP); wpDblListPushBack(WpStr8, &parts, &tmp); WpStr8 empty = wpStr8Lit(""); wpDblListPushBack(WpStr8, &parts, &empty); wpStr8Format(&expected, "%chome", WP_PATH_SEP); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpDblListPopFront(WpStr8, &parts); WpStr8 empty_2 = wpStr8Lit(""); wpDblListPushBack(WpStr8, &parts, &empty_2); wpStr8Format(&expected, "%s", ""); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpDblListPopBack(WpStr8, &parts); WpStr8 home_3 = wpStr8Lit("home"); wpDblListPushBack(WpStr8, &parts, &home_3); wpStr8CopyCstrCapped(&expected, "home"); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); return wpTesterResult(result); } WpTestFuncResult test_cpath_dirname(void) { WpAllocator arena = wpMemArenaAllocatorInit(MiB(8)); if (wpMemAllocatorInvalid(&arena)) { return wpTesterResult(false); } b8 result; WpStr8 *output = nullptr; WpStr8 expected = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE); // CASE 1 wpStr8Format(&tmp, "%c", WP_PATH_SEP); wpStr8Format(&expected, "%c", WP_PATH_SEP); output = wpCpathDirname(&arena, &tmp); result = output != nullptr && wpStr8Equal(output, &expected); // CASE 2 wpStr8Format(&expected, "%s", "."); WpStr8 path = wpStr8Lit("home"); output = wpCpathDirname(&arena, &path); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 3 path = wpStr8Lit(""); output = wpCpathDirname(&arena, &path); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 4 wpStr8Format(&tmp, "%chome%ctest", WP_PATH_SEP, WP_PATH_SEP); wpStr8Format(&expected, "%chome", WP_PATH_SEP); output = wpCpathDirname(&arena, &tmp); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 5 wpStr8Format(&tmp, "%chome%ctest%c", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP); wpStr8Format(&expected, "%chome", WP_PATH_SEP); output = wpCpathDirname(&arena, &tmp); result = result && output != nullptr && wpStr8Equal(output, &expected); wpMemArenaAllocatorDestroy(&arena); return wpTesterResult(result); } WpTestFuncResult test_cpath_dirup(void) { WpAllocator arena = wpMemArenaAllocatorInit(MiB(8)); if (wpMemAllocatorInvalid(&arena)) { return wpTesterResult(false); } b8 result; WpStr8 *output = nullptr; WpStr8 expected = wpStr8Buf(MAIN_BUF_SIZE); WpStr8 tmp = wpStr8Buf(TMP_BUF_SIZE); // CASE 1 wpStr8Format(&tmp, "%c", WP_PATH_SEP); wpStr8Format(&expected, "%c", WP_PATH_SEP); output = wpCpathDirup(&arena, &tmp, 3); result = output != nullptr && wpStr8Equal(output, &expected); // CASE 2 wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP); wpStr8Format(&expected, "%c", WP_PATH_SEP); output = wpCpathDirup(&arena, &tmp, 3); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 3 wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP); wpStr8CopyCstrCapped(&expected, "."); output = wpCpathDirup(&arena, &tmp, 3); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 4 wpStr8Format(&tmp, "%chome%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP, WP_PATH_SEP); wpStr8Format(&expected, "%chome", WP_PATH_SEP); output = wpCpathDirup(&arena, &tmp, 2); result = result && output != nullptr && wpStr8Equal(output, &expected); // CASE 5 wpStr8Format(&tmp, "home%cabdelrahman%cDocuments", WP_PATH_SEP, WP_PATH_SEP); wpStr8CopyCstrCapped(&expected, "home"); output = wpCpathDirup(&arena, &tmp, 2); result = result && output != nullptr && wpStr8Equal(output, &expected); wpMemArenaAllocatorDestroy(&arena); return wpTesterResult(result); }