mpv/test/paths.c

49 lines
1.6 KiB
C
Raw Normal View History

#include "common/common.h"
#include "config.h"
#include "options/path.h"
#include "tests.h"
static void test_join(char *file, int line, char *a, char *b, char *c)
{
char *res = mp_path_join(NULL, a, b);
if (strcmp(res, c) != 0) {
printf("%s:%d: '%s' + '%s' = '%s', expected '%s'\n", file, line,
a, b, res, c);
abort();
}
talloc_free(res);
}
#define TEST_JOIN(a, b, c) \
test_join(__FILE__, __LINE__, a, b, c);
static void run(struct test_ctx *ctx)
{
TEST_JOIN("", "", "");
TEST_JOIN("a", "", "a");
TEST_JOIN("/a", "", "/a");
TEST_JOIN("", "b", "b");
TEST_JOIN("", "/b", "/b");
TEST_JOIN("ab", "cd", "ab/cd");
TEST_JOIN("ab/", "cd", "ab/cd");
TEST_JOIN("ab/", "/cd", "/cd");
// Note: we prefer "/" on win32, but tolerate "\".
#if HAVE_DOS_PATHS
TEST_JOIN("ab\\", "cd", "ab\\cd");
TEST_JOIN("ab\\", "\\cd", "\\cd");
TEST_JOIN("c:/", "de", "c:/de");
TEST_JOIN("c:/a", "de", "c:/a/de");
TEST_JOIN("c:\\a", "c:\\b", "c:\\b");
TEST_JOIN("c:/a", "c:/b", "c:/b");
// Note: drive-relative paths are not always supported "properly"
TEST_JOIN("c:/a", "d:b", "d:b");
TEST_JOIN("c:a", "b", "c:a/b");
TEST_JOIN("c:", "b", "c:b");
#endif
}
const struct unittest test_paths = {
.name = "paths",
.run = run,
};