X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Ftest%2Furl.c;h=4dcb0d40cc25eed611981706493259925d09e5c2;hb=15172e6867ea91a40628edea89dce5d4d7039d79;hp=3ae9798140a52fe64f99b280f6cb9f88f872a820;hpb=99fab9089e9e1709d9c3a4bc5ced0c137ac59134;p=vlc diff --git a/src/test/url.c b/src/test/url.c index 3ae9798140..4dcb0d40cc 100644 --- a/src/test/url.c +++ b/src/test/url.c @@ -23,12 +23,13 @@ # include "config.h" #endif -#include +#include #include "vlc_url.h" #include "vlc_strings.h" #include #include +#include typedef char * (*conv_t) (const char *); @@ -36,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); @@ -60,15 +68,33 @@ 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_def, in, out); +} + +static inline void test_current_directory_path (const char *in, const char *cwd, const char *out) +{ + char * expected_result = NULL; + int val = asprintf(&expected_result, "file://%s/%s", cwd, out); + assert (val != -1); + + test (make_URI_def, in, expected_result); +} + int main (void) { + int val; + (void)setvbuf (stdout, NULL, _IONBF, 0); 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!"); @@ -79,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 ("", ""); @@ -93,5 +118,46 @@ int main (void) test_b64 ("fooba", "Zm9vYmE="); test_b64 ("foobar", "Zm9vYmFy"); + /* Path test */ + test_path ("file:///", "file:///"); + test_path ("http://www.example.com/%7Ejohn/", + "http://www.example.com/%7Ejohn/"); + 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", "smb://server/pub/music.ogg"); + test_path ("\\\\server\\pub\\music.ogg", "smb://server/pub/music.ogg"); + + /*int fd = open (".", O_RDONLY); + assert (fd != -1);*/ + val = chdir ("/tmp"); + assert (val != -1); + + char buf[256]; + char * tmpdir; + tmpdir = getcwd(buf, sizeof(buf)/sizeof(*buf)); + assert (tmpdir); + + test_current_directory_path ("movie.ogg", tmpdir, "movie.ogg"); + test_current_directory_path (".", tmpdir, "."); + test_current_directory_path ("", tmpdir, ""); + + /*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; }