From 045c52b442a48c0ef9002539f63854eb198acadd Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 10 Jul 2021 12:10:24 -0400 Subject: Improve URI tests --- test/test_uri.c | 38 +++++++++++++++++++++++++++++--------- 1 file changed, 29 insertions(+), 9 deletions(-) (limited to 'test') diff --git a/test/test_uri.c b/test/test_uri.c index 60d93831..4eb4cc29 100644 --- a/test/test_uri.c +++ b/test/test_uri.c @@ -24,10 +24,31 @@ #include static void -test_file_uri(const char* hostname, - const char* path, - const char* expected_uri, - const char* expected_path) +test_uri_string_has_scheme(void) +{ + assert(!serd_uri_string_has_scheme("relative")); + assert(!serd_uri_string_has_scheme("http")); + assert(!serd_uri_string_has_scheme("5nostartdigit")); + assert(!serd_uri_string_has_scheme("+nostartplus")); + assert(!serd_uri_string_has_scheme("-nostartminus")); + assert(!serd_uri_string_has_scheme(".nostartdot")); + assert(!serd_uri_string_has_scheme(":missing")); + assert(!serd_uri_string_has_scheme("a/slash/is/not/a/scheme/char")); + + assert(serd_uri_string_has_scheme("http://example.org/")); + assert(serd_uri_string_has_scheme("https://example.org/")); + assert(serd_uri_string_has_scheme("allapha:path")); + assert(serd_uri_string_has_scheme("w1thd1g1t5:path")); + assert(serd_uri_string_has_scheme("with.dot:path")); + assert(serd_uri_string_has_scheme("with+plus:path")); + assert(serd_uri_string_has_scheme("with-minus:path")); +} + +static void +test_file_uri(const char* const hostname, + const char* const path, + const char* const expected_uri, + const char* expected_path) { if (!expected_path) { expected_path = path; @@ -39,6 +60,7 @@ test_file_uri(const char* hostname, char* out_path = serd_parse_file_uri(node_str, &out_hostname); assert(!strcmp(node_str, expected_uri)); assert((hostname && out_hostname) || (!hostname && !out_hostname)); + assert(!hostname || !strcmp(hostname, out_hostname)); assert(!strcmp(out_path, expected_path)); serd_free(out_path); @@ -50,12 +72,9 @@ static void test_uri_parsing(void) { test_file_uri(NULL, "C:/My 100%", "file:///C:/My%20100%%", NULL); - test_file_uri("ahost", - "C:\\Pointless Space", - "file://ahost/C:/Pointless%20Space", - "C:/Pointless Space"); + test_file_uri("me", "C:\\Sp Ace", "file://me/C:/Sp%20Ace", "C:/Sp Ace"); test_file_uri(NULL, "/foo/bar", "file:///foo/bar", NULL); - test_file_uri("bhost", "/foo/bar", "file://bhost/foo/bar", NULL); + test_file_uri("you", "/foo/bar", "file://you/foo/bar", NULL); test_file_uri(NULL, "a/relative ", "a/relative%20%3Cpath%3E", NULL); // Missing trailing '/' after authority @@ -207,6 +226,7 @@ test_uri_resolution(void) int main(void) { + test_uri_string_has_scheme(); test_uri_parsing(); test_parse_uri(); test_is_within(); -- cgit v1.2.1