#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); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("home")); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("abdelrahman")); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("Documents")); 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); wpStr8ConcatCapped(&tmp, &wpStr8LitRo("home")); 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); wpDblListPushFront(WpStr8, &parts, &wpStr8Lit("home")); 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); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("")); wpStr8Format(&expected, "%chome", WP_PATH_SEP); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpDblListPopFront(WpStr8, &parts); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("")); wpStr8Format(&expected, "%s", ""); wpCpathJoinPath(&out, &parts); result = result && wpStr8Equal(&out, &expected); wpDblListPopBack(WpStr8, &parts); wpDblListPushBack(WpStr8, &parts, &wpStr8Lit("home")); 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 = NULL; 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 != NULL && wpStr8Equal(output, &expected); // CASE 2 wpStr8Format(&expected, "%s", "."); output = wpCpathDirname(&arena, &wpStr8Lit("home")); result = result && output != NULL && wpStr8Equal(output, &expected); // CASE 3 output = wpCpathDirname(&arena, &wpStr8Lit("")); result = result && output != NULL && 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 != NULL && 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 != NULL && 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 = NULL; 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 != NULL && 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 != NULL && 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 != NULL && 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 != NULL && 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 != NULL && wpStr8Equal(output, &expected); wpMemArenaAllocatorDestroy(&arena); return wpTesterResult(result); }