95 lines
2.4 KiB
C
95 lines
2.4 KiB
C
#ifndef SK_TEST_PATH_H
|
|
#define SK_TEST_PATH_H
|
|
|
|
#include <CUnit/CUnit.h>
|
|
#include <path.h>
|
|
|
|
static void test_is_relative(bool oracle, char const* text)
|
|
{
|
|
struct path path;
|
|
path_init(&path, text);
|
|
CU_ASSERT_FATAL(path_is_relative(&path) == oracle);
|
|
path_free(&path);
|
|
}
|
|
|
|
static void test_path_relative()
|
|
{
|
|
test_is_relative(true, "./module.sk");
|
|
test_is_relative(false, "module.sk");
|
|
test_is_relative(false, "/home/module.sk");
|
|
test_is_relative(false, "");
|
|
}
|
|
|
|
static void test_path_set_ext(char const* oracle,
|
|
char const* text,
|
|
char const* ext)
|
|
{
|
|
struct path path;
|
|
path_init(&path, text);
|
|
path_set_ext(&path, ext);
|
|
if (strcmp(path.str->value, oracle) != 0)
|
|
{
|
|
fprintf(stderr, "\n%s + %s", text, ext);
|
|
fprintf(stderr, "\n%s <> %s\n", oracle, path.str->value);
|
|
}
|
|
CU_ASSERT_STRING_EQUAL_FATAL(path.str->value, oracle);
|
|
path_free(&path);
|
|
}
|
|
|
|
static void test_path_ext()
|
|
{
|
|
test_path_set_ext("./hello/world",
|
|
"./hello/world", "");
|
|
|
|
test_path_set_ext("./hello/world",
|
|
"./hello/world.sk", "");
|
|
|
|
test_path_set_ext("./hello/world.sk",
|
|
"./hello/world", "sk");
|
|
|
|
test_path_set_ext("./hello/world.sk",
|
|
"./hello/world.sk", "sk");
|
|
|
|
test_path_set_ext("./hello/world.sk",
|
|
"./hello/world.com", "sk");
|
|
}
|
|
|
|
static void test_path_extract_name(char const* text,
|
|
char const* oracle)
|
|
{
|
|
struct path path;
|
|
path_init(&path, text);
|
|
|
|
struct str s;
|
|
str_init(&s);
|
|
|
|
path_extract_name(&path, &s);
|
|
|
|
if (strcmp(s.value, oracle) != 0)
|
|
{
|
|
fprintf(stderr, "\n%s <> %s\n", oracle, s.value);
|
|
}
|
|
|
|
CU_ASSERT_STRING_EQUAL_FATAL(s.value, oracle);
|
|
str_free(&s);
|
|
path_free(&path);
|
|
}
|
|
|
|
static void test_path_extract()
|
|
{
|
|
test_path_extract_name("world.sk", "world.sk");
|
|
test_path_extract_name("./world.sk", "world.sk");
|
|
test_path_extract_name("./../world.sk", "../world.sk");
|
|
test_path_extract_name("./world", "world");
|
|
test_path_extract_name("./hello/world", "hello/world");
|
|
}
|
|
void register_path()
|
|
{
|
|
CU_pSuite suite = CU_add_suite("Path", 0, 0);
|
|
CU_add_test(suite, "Relative paths", test_path_relative);
|
|
CU_add_test(suite, "Extensions", test_path_ext);
|
|
CU_add_test(suite, "Extract name", test_path_extract);
|
|
}
|
|
|
|
#endif
|