mirror of https://github.com/mpv-player/mpv
test: add some path handling tests
Exhaustive tests would be nice, but I'm only adding a test for a function I'm going to change.
This commit is contained in:
parent
cce7062a8a
commit
1293c40623
|
@ -0,0 +1,48 @@
|
||||||
|
#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,
|
||||||
|
};
|
|
@ -9,6 +9,7 @@ static const struct unittest *unittests[] = {
|
||||||
&test_img_format,
|
&test_img_format,
|
||||||
&test_json,
|
&test_json,
|
||||||
&test_linked_list,
|
&test_linked_list,
|
||||||
|
&test_paths,
|
||||||
&test_repack_sws,
|
&test_repack_sws,
|
||||||
#if HAVE_ZIMG
|
#if HAVE_ZIMG
|
||||||
&test_repack_zimg,
|
&test_repack_zimg,
|
||||||
|
|
|
@ -43,6 +43,7 @@ extern const struct unittest test_json;
|
||||||
extern const struct unittest test_linked_list;
|
extern const struct unittest test_linked_list;
|
||||||
extern const struct unittest test_repack_sws;
|
extern const struct unittest test_repack_sws;
|
||||||
extern const struct unittest test_repack_zimg;
|
extern const struct unittest test_repack_zimg;
|
||||||
|
extern const struct unittest test_paths;
|
||||||
|
|
||||||
#define assert_true(x) assert(x)
|
#define assert_true(x) assert(x)
|
||||||
#define assert_false(x) assert(!(x))
|
#define assert_false(x) assert(!(x))
|
||||||
|
|
|
@ -403,6 +403,7 @@ def build(ctx):
|
||||||
( "test/img_format.c", "tests" ),
|
( "test/img_format.c", "tests" ),
|
||||||
( "test/json.c", "tests" ),
|
( "test/json.c", "tests" ),
|
||||||
( "test/linked_list.c", "tests" ),
|
( "test/linked_list.c", "tests" ),
|
||||||
|
( "test/paths.c", "tests" ),
|
||||||
( "test/scale_sws.c", "tests" ),
|
( "test/scale_sws.c", "tests" ),
|
||||||
( "test/scale_test.c", "tests" ),
|
( "test/scale_test.c", "tests" ),
|
||||||
( "test/scale_zimg.c", "tests && zimg" ),
|
( "test/scale_zimg.c", "tests && zimg" ),
|
||||||
|
|
Loading…
Reference in New Issue