| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 | 
							- #include "api.h"
 
- #include "pal_debug.h"
 
- #include "pal_defs.h"
 
- #include "pal_error.h"
 
- static const char* get_norm_path_cases[][2] = {
 
-     {"/", "/"},
 
-     {"/a/b/c", "/a/b/c"},
 
-     {"/a/../b", "/b"},
 
-     {"/../a", "/a"},
 
-     {"/../../../../../a", "/a"},
 
-     {"/../a/../../b", "/b"},
 
-     {"/../..a/b", "/..a/b"},
 
-     {"/a/..", "/"},
 
-     {"/a/.", "/a"},
 
-     {"/.//a//./b", "/a/b"},
 
-     {"///////.////////////./", "/"},
 
-     {"/...././a/../././.../b/.....", "/..../.../b/....."},
 
-     {"a/b/c", "a/b/c"},
 
-     {"a/../b", "b"},
 
-     {"../a", "../a"},
 
-     {"../../../../../a", "../../../../../a"},
 
-     {"../a/../../b", "../../b"},
 
-     {"../..a/b", "../..a/b"},
 
-     {"a/..", ""},
 
-     {"a/.", "a"},
 
- };
 
- static const char* get_base_name_cases[][2] = {
 
-     {"/", ""},      {"/a", "a"},   {"/a/b/c", "c"},           {"/..a/b", "b"},
 
-     {"", ""},       {"../a", "a"}, {"../../../../../a", "a"}, {"..a/b", "b"},
 
-     {"a/b/c", "c"},
 
- };
 
- #define print_err(name, i, ...)                                 \
 
-     do {                                                        \
 
-         pal_printf("%s: case %lu (\"%s\") ", name, i, cases[i][0]); \
 
-         pal_printf(__VA_ARGS__);                                \
 
-     } while (0)
 
- static const char* (*cases)[2];
 
- static size_t cases_len;
 
- static int (*func_to_test)(const char*, char*, size_t*);
 
- static const char* func_name;
 
- static int run_test(void) {
 
-     char buf[URI_MAX] = {0};
 
-     for (size_t i = 0; i < cases_len; i++) {
 
-         size_t size = sizeof(buf);
 
-         int ret     = func_to_test(cases[i][0], buf, &size);
 
-         if (ret < 0) {
 
-             print_err(func_name, i, "failed with error: %s\n", pal_strerror(ret));
 
-             return 1;
 
-         }
 
-         if (strlen(buf) != size) {
 
-             print_err(func_name, i, "returned wrong size: %zu\n", size);
 
-             return 1;
 
-         }
 
-         if (strcmp(cases[i][1], buf) != 0) {
 
-             print_err(func_name, i, "returned: \"%s\", instead of: \"%s\"\n", buf, cases[i][1]);
 
-             return 1;
 
-         }
 
-     }
 
-     return 0;
 
- }
 
- int main(void) {
 
-     cases        = get_norm_path_cases;
 
-     cases_len    = ARRAY_SIZE(get_norm_path_cases);
 
-     func_to_test = get_norm_path;
 
-     func_name = "get_norm_path";
 
-     if (run_test()) {
 
-         return 1;
 
-     }
 
-     cases        = get_base_name_cases;
 
-     cases_len    = ARRAY_SIZE(get_base_name_cases);
 
-     func_to_test = get_base_name;
 
-     func_name = "get_base_name";
 
-     if (run_test()) {
 
-         return 1;
 
-     }
 
-     pal_printf("Success!\n");
 
-     return 0;
 
- }
 
 
  |