X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftest%2Furl.c;h=20849866305616cb146fc9540fde642b2f43a182;hb=12ade3e3bc975d5426ba4af155b7372c31093b31;hp=875c9a5f7b37a588f8fbba482e712428abe679b7;hpb=66bd92014e5d721d8fe74bfd69f601bfd228012a;p=vlc diff --git a/src/test/url.c b/src/test/url.c index 875c9a5f7b..2084986630 100644 --- a/src/test/url.c +++ b/src/test/url.c @@ -37,12 +37,19 @@ static void test (conv_t f, const char *in, const char *out) { char *res; - printf ("\"%s\" -> \"%s\" ?\n", in, out); + if (out != NULL) + printf ("\"%s\" -> \"%s\" ?\n", in, out); + else + printf ("\"%s\" -> NULL ?\n", in); res = f (in); if (res == NULL) - exit (1); - - if (strcmp (res, out)) + { + if (out == NULL) + return; /* good: NULL -> NULL */ + puts (" ERROR: got NULL"); + exit (2); + } + if (out == NULL || strcmp (res, out)) { printf (" ERROR: got \"%s\"\n", res); exit (2); @@ -61,9 +68,14 @@ static inline void test_b64 (const char *in, const char *out) test (vlc_b64_encode, in, out); } +static char *make_URI_def (const char *in) +{ + return make_URI (in, NULL); +} + static inline void test_path (const char *in, const char *out) { - test (make_URI, in, out); + test (make_URI_def, in, out); } static inline void test_current_directory_path (const char *in, const char *cwd, const char *out) @@ -72,7 +84,7 @@ static inline void test_current_directory_path (const char *in, const char *cwd, int val = asprintf(&expected_result, "file://%s/%s", cwd, out); assert (val != -1); - test (make_URI, in, expected_result); + test (make_URI_def, in, expected_result); } int main (void) @@ -83,9 +95,6 @@ int main (void) test_decode ("this_should_not_be_modified_1234", "this_should_not_be_modified_1234"); - test_decode ("This+should+be+modified+1234!", - "This should be modified 1234!"); - test_decode ("This%20should%20be%20modified%201234!", "This should be modified 1234!"); @@ -96,10 +105,9 @@ int main (void) test_decode ("%2", "%2"); test_decode ("%0000", ""); - /* UTF-8 tests */ - test_decode ("T%C3%a9l%c3%A9vision+%e2%82%Ac", "Télévision €"); - test_decode ("T%E9l%E9vision", "T?l?vision"); - test_decode ("%C1%94%C3%a9l%c3%A9vision", "??élévision"); /* overlong */ + /* Non-ASCII tests */ + test_decode ("T%C3%a9l%c3%A9vision %e2%82%Ac", "Télévision €"); + test_decode ("T%E9l%E9vision", "T\xe9l\xe9vision"); /* Base 64 tests */ test_b64 ("", ""); @@ -117,7 +125,9 @@ int main (void) test_path ("/", "file:///"); test_path ("/home/john/", "file:///home/john/"); test_path ("/home/john/music.ogg", "file:///home/john/music.ogg"); - //test_path ("\\\\server/pub/music.ogg", "file://server/pub/music.ogg"); + test_path ("\\\\server/pub/music.ogg", "smb://server/pub/music.ogg"); + test_path ("\\\\server\\pub\\music.ogg", "smb://server/pub/music.ogg"); + test_path ("\\\\server", "smb://server"); /*int fd = open (".", O_RDONLY); assert (fd != -1);*/ @@ -136,5 +146,19 @@ int main (void) /*val = fchdir (fd); assert (val != -1);*/ + /* URI to path tests */ +#define test( a, b ) test (make_path, a, b) + test ("mailto:john@example.com", NULL); + test ("http://www.example.com/file.html#ref", NULL); + test ("file://", NULL); + test ("file:///", "/"); + test ("file://localhost/home/john/music%2Eogg", "/home/john/music.ogg"); + test ("file://localhost/home/john/text#ref", "/home/john/text"); + test ("fd://0foobar", NULL); + test ("fd://0#ref", "/dev/stdin"); + test ("fd://1", "/dev/stdout"); + test ("fd://12345", "/dev/fd/12345"); +#undef test + return 0; }