aboutsummaryrefslogtreecommitdiffstats
path: root/tests/serd_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/serd_test.c')
-rw-r--r--tests/serd_test.c177
1 files changed, 86 insertions, 91 deletions
diff --git a/tests/serd_test.c b/tests/serd_test.c
index 2973cbb5..d48d23a9 100644
--- a/tests/serd_test.c
+++ b/tests/serd_test.c
@@ -91,7 +91,7 @@ check_file_uri(const char* hostname,
expected_path = path;
}
- SerdNode* node = serd_node_new_file_uri(path, hostname, 0, escape);
+ SerdNode* node = serd_node_new_file_uri(path, hostname, escape);
const char* node_str = serd_node_get_string(node);
char* out_hostname = NULL;
char* out_path = serd_file_uri_parse(node_str, &out_hostname);
@@ -113,6 +113,23 @@ check_file_uri(const char* hostname,
return ret;
}
+static int
+check_rel_uri(const char* uri,
+ const SerdNode* base,
+ const SerdNode* root,
+ const char* expected)
+{
+ SerdNode* rel = serd_node_new_relative_uri(uri, base, root);
+ const int ret = strcmp(serd_node_get_string(rel), expected);
+ serd_node_free(rel);
+ if (ret) {
+ FAILF("Bad relative URI `%s' (expected `%s')\n",
+ serd_node_get_string(rel),
+ expected);
+ }
+ return ret;
+}
+
int
main(void)
{
@@ -281,14 +298,14 @@ main(void)
// Test serd_node_equals
const uint8_t replacement_char_str[] = { 0xEF, 0xBF, 0xBD, 0 };
- SerdNode* lhs = serd_node_new_string(SERD_LITERAL, (const char*)replacement_char_str);
- SerdNode* rhs = serd_node_new_string(SERD_LITERAL, "123");
+ SerdNode* lhs = serd_node_new_string((const char*)replacement_char_str);
+ SerdNode* rhs = serd_node_new_string("123");
if (serd_node_equals(lhs, rhs)) {
FAILF("%s == %s\n",
serd_node_get_string(lhs), serd_node_get_string(rhs));
}
- SerdNode* qnode = serd_node_new_string(SERD_CURIE, "foo:bar");
+ SerdNode* qnode = serd_node_new_curie("foo:bar");
if (serd_node_equals(lhs, qnode)) {
FAILF("%s == %s\n",
serd_node_get_string(lhs), serd_node_get_string(qnode));
@@ -309,39 +326,17 @@ main(void)
// Test serd_node_new_string
- SerdNode* hello = serd_node_new_string(SERD_LITERAL, "hello\"");
+ SerdNode* hello = serd_node_new_string("hello\"");
if (serd_node_get_length(hello) != 6 ||
serd_node_get_flags(hello) != SERD_HAS_QUOTE ||
strcmp(serd_node_get_string(hello), "hello\"")) {
FAILF("Bad node %s\n", serd_node_get_string(hello));
}
- if (serd_node_new_string(SERD_URI, NULL)) {
+ if (serd_node_new_string(NULL)) {
FAIL("Successfully created node from NULL string\n");
}
- // Test serd_node_new_substring
-
- if (serd_node_new_substring(SERD_LITERAL, NULL, 32)) {
- FAIL("Successfully created node from NULL substring\n");
- }
-
- SerdNode* a_b = serd_node_new_substring(SERD_LITERAL, "a\"bc", 3);
- if (serd_node_get_length(a_b) != 3 ||
- serd_node_get_flags(a_b) != SERD_HAS_QUOTE ||
- strncmp(serd_node_get_string(a_b), "a\"b", 3)) {
- FAILF("Bad node %s\n", serd_node_get_string(a_b));
- }
-
- serd_node_free(a_b);
- a_b = serd_node_new_substring(SERD_LITERAL, "a\"bc", 10);
- if (serd_node_get_length(a_b) != 4 ||
- serd_node_get_flags(a_b) != SERD_HAS_QUOTE ||
- strncmp(serd_node_get_string(a_b), "a\"bc", 4)) {
- FAILF("Bad node %s\n", serd_node_get_string(a_b));
- }
- serd_node_free(a_b);
-
// Test serd_node_new_literal
if (serd_node_new_literal(NULL, NULL, NULL)) {
@@ -365,8 +360,7 @@ main(void)
}
serd_node_free(hello_l);
- SerdNode* eg_Thing =
- serd_node_new_uri_from_string("http://example.org/Thing", NULL, NULL);
+ SerdNode* eg_Thing = serd_node_new_uri("http://example.org/Thing");
SerdNode* hello_dt =
serd_node_new_literal("hello_dt\"", eg_Thing, NULL);
@@ -380,69 +374,71 @@ main(void)
serd_node_free(hello_dt);
serd_node_free(eg_Thing);
- // Test serd_node_new_uri_from_string
+ // Test absolute URI creation
- if (serd_node_new_uri_from_string(NULL, NULL, NULL)) {
+ if (serd_node_new_uri(NULL)) {
FAIL("Successfully created NULL URI\n");
}
- SerdURI base_uri;
- SerdNode* base = serd_node_new_uri_from_string("http://example.org/",
- NULL, &base_uri);
- SerdNode* nil = serd_node_new_uri_from_string(NULL, &base_uri, NULL);
- SerdNode* nil2 = serd_node_new_uri_from_string("", &base_uri, NULL);
- if (serd_node_get_type(nil) != SERD_URI ||
- strcmp(serd_node_get_string(nil), serd_node_get_string(base)) ||
- serd_node_get_type(nil2) != SERD_URI ||
- strcmp(serd_node_get_string(nil2), serd_node_get_string(base))) {
+ SerdNode* not_a_uri = serd_node_new_string("hello");
+ SerdNode* root = serd_node_new_uri("http://example.org/a/b/");
+ SerdNode* base = serd_node_new_uri("http://example.org/a/b/c/");
+ SerdNode* nil = serd_node_new_resolved_uri(NULL, base);
+ SerdNode* nil2 = serd_node_new_resolved_uri("", base);
+ if (serd_node_new_resolved_uri("", NULL)) {
+ FAIL("Successfully created URI resolved against NULL\n");
+ } else if (serd_node_new_resolved_uri("", not_a_uri)) {
+ FAIL("Successfully created URI resolved against non-URI\n");
+ } else if (serd_node_get_type(nil) != SERD_URI ||
+ strcmp(serd_node_get_string(nil), serd_node_get_string(base)) ||
+ serd_node_get_type(nil2) != SERD_URI ||
+ strcmp(serd_node_get_string(nil2), serd_node_get_string(base))) {
FAILF("URI %s != base %s\n",
serd_node_get_string(nil),
serd_node_get_string(base));
}
- // Test serd_node_new_relative_uri
- SerdNode* abs = serd_node_new_string(SERD_URI, "http://example.org/foo/bar");
- SerdURI abs_uri;
- serd_uri_parse(serd_node_get_string(abs), &abs_uri);
+ // Test relative URI creation
- SerdURI rel_uri;
- SerdNode* rel = serd_node_new_relative_uri(&abs_uri, &base_uri, NULL, &rel_uri);
- if (strcmp(serd_node_get_string(rel), "/foo/bar")) {
- FAILF("Bad relative URI %s (expected '/foo/bar')\n",
- serd_node_get_string(rel));
+ if (check_rel_uri("http://example.org/a/b/c/foo", base, NULL, "foo") ||
+ check_rel_uri("http://example.org/a/", base, NULL, "../../") ||
+ check_rel_uri("http://example.org/a/", base, root,
+ "http://example.org/a/") ||
+ check_rel_uri("http://example.org/", base, NULL,
+ "../../../") ||
+ check_rel_uri("http://drobilla.net/a", base, NULL,
+ "http://drobilla.net/a")) {
+ return 1;
}
- SerdNode* up = serd_node_new_relative_uri(&base_uri, &abs_uri, NULL, NULL);
- if (strcmp(serd_node_get_string(up), "../")) {
- FAILF("Bad relative URI %s (expected '../')\n",
- serd_node_get_string(up));
- }
+ // Test URI resolution
- SerdNode* noup = serd_node_new_relative_uri(&base_uri, &abs_uri, &abs_uri, NULL);
- if (strcmp(serd_node_get_string(noup), "http://example.org/")) {
- FAILF("Bad relative URI %s (expected 'http://example.org/')\n",
- serd_node_get_string(noup));
+ if (serd_node_resolve(NULL, base)) {
+ FAIL("Successfully resolved null URI\n");
+ } else if (serd_node_resolve(nil, NULL)) {
+ FAIL("Successfully resolved against null URI\n");
+ } else if (serd_node_resolve(not_a_uri, base)) {
+ FAIL("Successfully resolved a non-URI\n");
+ } else if (serd_node_resolve(nil, not_a_uri)) {
+ FAIL("Successfully resolved against a non-URI\n");
}
- SerdNode* x = serd_node_new_string(SERD_URI, "http://example.org/foo/x");
- SerdURI x_uri;
- serd_uri_parse(serd_node_get_string(x), &x_uri);
-
- SerdNode* x_rel =
- serd_node_new_relative_uri(&x_uri, &abs_uri, &abs_uri, NULL);
- if (strcmp(serd_node_get_string(x_rel), "x")) {
- FAILF("Bad relative URI %s (expected 'x')\n",
- serd_node_get_string(x_rel));
+ SerdNode* rel = serd_node_new_relative_uri(
+ "http://example.org/a/b/c/foo", base, NULL);
+ SerdNode* resolved = serd_node_resolve(rel, base);
+ if (strcmp(serd_node_get_string(resolved),
+ "http://example.org/a/b/c/foo")) {
+ FAILF("Bad resolved URI %s (expected 'http://example.org/a/b/c/foo'\n",
+ serd_node_get_string(resolved));
}
- serd_node_free(x_rel);
- serd_node_free(noup);
- serd_node_free(up);
- serd_node_free(abs);
serd_node_free(nil);
serd_node_free(nil2);
+ serd_node_free(not_a_uri);
+ serd_node_free(resolved);
serd_node_free(rel);
serd_node_free(base);
+ serd_node_free(root);
// Test serd_node_new_blank
@@ -462,13 +458,13 @@ main(void)
SerdWorld* world = serd_world_new();
- SerdNode* u = serd_node_new_string(SERD_URI, "http://example.org/foo");
- SerdNode* b = serd_node_new_string(SERD_CURIE, "invalid");
- SerdNode* c = serd_node_new_string(SERD_CURIE, "eg.2:b");
+ SerdNode* u = serd_node_new_uri("http://example.org/foo");
+ SerdNode* b = serd_node_new_curie("invalid");
+ SerdNode* c = serd_node_new_curie("eg.2:b");
SerdEnv* env = serd_env_new(NULL);
serd_env_set_prefix_from_strings(env, "eg.2", "http://example.org/");
- if (serd_env_get_base_uri(env, NULL)) {
+ if (serd_env_get_base_uri(env)) {
FAIL("Unexpected initial base URI\n");
}
@@ -480,7 +476,7 @@ main(void)
FAILF("Set base URI to %s\n", serd_node_get_string(hello));
}
- if (serd_env_get_base_uri(env, NULL)) {
+ if (serd_env_get_base_uri(env)) {
FAIL("Unexpected base URI\n");
}
@@ -502,7 +498,7 @@ main(void)
}
serd_node_free(xu);
- SerdNode* badpre = serd_node_new_string(SERD_CURIE, "hm:what");
+ SerdNode* badpre = serd_node_new_curie("hm:what");
SerdNode* xbadpre = serd_env_expand_node(env, badpre);
if (xbadpre) {
FAILF("Expanded invalid curie %s\n", serd_node_get_string(badpre));
@@ -520,7 +516,7 @@ main(void)
FAIL("Set NULL prefix\n");
}
- SerdNode* lit = serd_node_new_string(SERD_LITERAL, "hello");
+ SerdNode* lit = serd_node_new_string("hello");
if (!serd_env_set_prefix(env, b, lit)) {
FAIL("Set prefix to literal\n");
}
@@ -532,7 +528,7 @@ main(void)
FAILF("Bad prefix count %d\n", n_prefixes);
}
- SerdNode* shorter_uri = serd_node_new_string(SERD_URI, "urn:foo");
+ SerdNode* shorter_uri = serd_node_new_uri("urn:foo");
const SerdNode* prefix_name;
if (serd_env_qualify(env, shorter_uri, &prefix_name, &suffix)) {
FAILF("Qualified %s\n", serd_node_get_string(shorter_uri));
@@ -554,7 +550,6 @@ main(void)
SERD_TURTLE,
(SerdStyle)0,
env,
- NULL,
(SerdWriteFunc)fwrite,
fd);
if (!writer) {
@@ -577,9 +572,9 @@ main(void)
}
uint8_t buf[] = { 0xEF, 0xBF, 0xBD, 0 };
- SerdNode* s = serd_node_new_string(SERD_URI, "");
- SerdNode* p = serd_node_new_string(SERD_URI, "http://example.org/pred");
- SerdNode* o = serd_node_new_string(SERD_LITERAL, (char*)buf);
+ SerdNode* s = serd_node_new_uri("");
+ SerdNode* p = serd_node_new_uri("http://example.org/pred");
+ SerdNode* o = serd_node_new_string((char*)buf);
// Write 3 invalid statements (should write nothing)
const SerdNode* junk[][5] = { { s, p, NULL },
@@ -600,7 +595,7 @@ main(void)
}
}
- SerdNode* urn_Type = serd_node_new_uri_from_string("urn:Type", NULL, NULL);
+ SerdNode* urn_Type = serd_node_new_uri("urn:Type");
SerdNode* t = serd_node_new_literal((char*)buf, urn_Type, NULL);
SerdNode* l = serd_node_new_literal((char*)buf, NULL, "en");
@@ -623,8 +618,8 @@ main(void)
// Write statements with bad UTF-8 (should be replaced)
const char bad_str[] = { (char)0xFF, (char)0x90, 'h', 'i', 0 };
- SerdNode* bad_lit = serd_node_new_string(SERD_LITERAL, bad_str);
- SerdNode* bad_uri = serd_node_new_string(SERD_URI, bad_str);
+ SerdNode* bad_lit = serd_node_new_string(bad_str);
+ SerdNode* bad_uri = serd_node_new_uri(bad_str);
if (iface->statement(iface->handle, 0, NULL, s, p, bad_lit)) {
FAIL("Failed to write junk UTF-8 literal\n");
} else if (iface->statement(iface->handle, 0, NULL, s, p, bad_uri)) {
@@ -635,7 +630,7 @@ main(void)
// Write 1 valid statement
serd_node_free(o);
- o = serd_node_new_string(SERD_LITERAL, "hello");
+ o = serd_node_new_string("hello");
if (iface->statement(iface->handle, 0, NULL, s, p, o)) {
FAIL("Failed to write valid statement\n");
}
@@ -652,9 +647,9 @@ main(void)
// Test buffer sink
SerdBuffer buffer = { NULL, 0 };
writer = serd_writer_new(
- world, SERD_TURTLE, (SerdStyle)0, env, NULL, serd_buffer_sink, &buffer);
+ world, SERD_TURTLE, (SerdStyle)0, env, serd_buffer_sink, &buffer);
- o = serd_node_new_string(SERD_URI, "http://example.org/base");
+ o = serd_node_new_uri("http://example.org/base");
if (serd_writer_set_base_uri(writer, o)) {
FAIL("Failed to write to chunk sink\n");
}
@@ -679,7 +674,7 @@ main(void)
FAIL("Failed to create reader\n");
}
- SerdNode* g = serd_node_new_string(SERD_URI, "http://example.org/");
+ SerdNode* g = serd_node_new_uri("http://example.org/");
serd_reader_set_default_graph(reader, g);
serd_reader_add_blank_prefix(reader, "tmp");
serd_reader_add_blank_prefix(reader, NULL);