aboutsummaryrefslogtreecommitdiffstats
path: root/tests/serd_test.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2018-04-01 20:33:33 +0200
committerDavid Robillard <d@drobilla.net>2020-06-21 18:12:03 +0200
commit7d25d7319564fe0b1c89690a99d033952df8e55f (patch)
tree74b1f1aa77dfdfe8b7751531f588dd080d3a1e0d /tests/serd_test.c
parent27ee06024c2d54a2340e83e5c90e919f8764ae0f (diff)
downloadserd-7d25d7319564fe0b1c89690a99d033952df8e55f.tar.gz
serd-7d25d7319564fe0b1c89690a99d033952df8e55f.tar.bz2
serd-7d25d7319564fe0b1c89690a99d033952df8e55f.zip
Merge datatype and/or language into node
This moves closer to the sord API, and is more convenient in most cases.
Diffstat (limited to 'tests/serd_test.c')
-rw-r--r--tests/serd_test.c91
1 files changed, 59 insertions, 32 deletions
diff --git a/tests/serd_test.c b/tests/serd_test.c
index cee0b33b..98540ece 100644
--- a/tests/serd_test.c
+++ b/tests/serd_test.c
@@ -69,16 +69,12 @@ test_sink(void* handle,
const SerdNode* graph,
const SerdNode* subject,
const SerdNode* predicate,
- const SerdNode* object,
- const SerdNode* object_datatype,
- const SerdNode* object_lang)
+ const SerdNode* object)
{
(void)flags;
(void)subject;
(void)predicate;
(void)object;
- (void)object_datatype;
- (void)object_lang;
ReaderTest* rt = (ReaderTest*)handle;
++rt->n_statements;
@@ -384,6 +380,36 @@ test_node_from_substring(void)
serd_node_free(a_b);
}
+static void test_literal(void)
+{
+ assert(!serd_node_new_literal(NULL, NULL, NULL));
+
+ SerdNode* hello2 = serd_node_new_literal("hello\"", NULL, NULL);
+ assert(serd_node_get_length(hello2) == 6 &&
+ serd_node_get_flags(hello2) == SERD_HAS_QUOTE &&
+ !strcmp(serd_node_get_string(hello2), "hello\""));
+ serd_node_free(hello2);
+
+ SerdNode* hello_l = serd_node_new_literal("hello_l\"", NULL, "en");
+ assert(serd_node_get_length(hello_l) == 8);
+ assert(!strcmp(serd_node_get_string(hello_l), "hello_l\""));
+ assert(serd_node_get_flags(hello_l) ==
+ (SERD_HAS_QUOTE | SERD_HAS_LANGUAGE));
+ assert(!strcmp(serd_node_get_string(serd_node_get_language(hello_l)),
+ "en"));
+ serd_node_free(hello_l);
+
+ SerdNode* hello_dt = serd_node_new_literal(
+ "hello_dt\"", "http://example.org/Thing", NULL);
+ assert(serd_node_get_length(hello_dt) == 9);
+ assert(!strcmp(serd_node_get_string(hello_dt), "hello_dt\""));
+ assert(serd_node_get_flags(hello_dt) ==
+ (SERD_HAS_QUOTE | SERD_HAS_DATATYPE));
+ assert(!strcmp(serd_node_get_string(serd_node_get_datatype(hello_dt)),
+ "http://example.org/Thing"));
+ serd_node_free(hello_dt);
+}
+
static void
test_uri_from_string(void)
{
@@ -525,38 +551,38 @@ test_writer(const char* const path)
SerdNode* o = serd_node_new_string(SERD_LITERAL, (char*)buf);
// Write 3 invalid statements (should write nothing)
- const SerdNode* junk[][5] = { { s, p, NULL, NULL, NULL },
- { s, NULL, o, NULL, NULL },
- { NULL, p, o, NULL, NULL },
- { s, p, NULL, NULL, NULL },
- { s, NULL, o, NULL, NULL },
- { NULL, p, o, NULL, NULL },
- { s, o, o, NULL, NULL },
- { o, p, o, NULL, NULL },
- { s, p, NULL, NULL, NULL },
- { NULL, NULL, NULL, NULL, NULL } };
+ const SerdNode* junk[][5] = { { s, p, NULL },
+ { s, NULL, o },
+ { NULL, p, o },
+ { s, p, NULL },
+ { s, NULL, o },
+ { NULL, p, o },
+ { s, o, o },
+ { o, p, o },
+ { s, p, NULL },
+ { NULL, NULL, NULL } };
for (unsigned i = 0; i < sizeof(junk) / (sizeof(SerdNode*) * 5); ++i) {
assert(serd_writer_write_statement(
writer, 0, NULL,
- junk[i][0], junk[i][1], junk[i][2], junk[i][3], junk[i][4]));
+ junk[i][0], junk[i][1], junk[i][2]));
}
- SerdNode* t = serd_node_new_string(SERD_URI, "urn:Type");
- SerdNode* l = serd_node_new_string(SERD_LITERAL, "en");
- const SerdNode* good[][5] = { { s, p, o, NULL, NULL },
- { s, p, o, NULL, NULL },
- { s, p, o, t, NULL },
- { s, p, o, NULL, l },
- { s, p, o, t, l },
- { s, p, o, t, NULL },
- { s, p, o, NULL, l },
- { s, p, o, NULL, NULL },
- { s, p, o, NULL, NULL },
- { s, p, o, NULL, NULL } };
+ SerdNode* t = serd_node_new_literal((char*)buf, "urn:Type", NULL);
+ SerdNode* l = serd_node_new_literal((char*)buf, NULL, "en");
+ const SerdNode* good[][5] = { { s, p, o },
+ { s, p, o },
+ { s, p, t },
+ { s, p, l },
+ { s, p, l },
+ { s, p, t },
+ { s, p, l },
+ { s, p, o },
+ { s, p, o },
+ { s, p, o } };
for (unsigned i = 0; i < sizeof(good) / (sizeof(SerdNode*) * 5); ++i) {
assert(!serd_writer_write_statement(
writer, 0, NULL,
- good[i][0], good[i][1], good[i][2], good[i][3], good[i][4]));
+ good[i][0], good[i][1], good[i][2]));
}
// Write statements with bad UTF-8 (should be replaced)
@@ -564,9 +590,9 @@ test_writer(const char* const path)
SerdNode* bad_lit = serd_node_new_string(SERD_LITERAL, bad_str);
SerdNode* bad_uri = serd_node_new_string(SERD_URI, bad_str);
assert(!serd_writer_write_statement(
- writer, 0, NULL, s, p, bad_lit, NULL, NULL));
+ writer, 0, NULL, s, p, bad_lit));
assert(!serd_writer_write_statement(writer, 0, NULL,
- s, p, bad_uri, NULL, NULL));
+ s, p, bad_uri));
serd_node_free(bad_lit);
serd_node_free(bad_uri);
@@ -574,7 +600,7 @@ test_writer(const char* const path)
serd_node_free(o);
o = serd_node_new_string(SERD_LITERAL, "hello");
assert(!serd_writer_write_statement(writer, 0, NULL,
- s, p, o, NULL, NULL));
+ s, p, o));
serd_writer_free(writer);
serd_node_free(lit);
@@ -646,6 +672,7 @@ main(void)
test_node_equals();
test_node_from_string();
test_node_from_substring();
+ test_literal();
test_uri_from_string();
test_relative_uri();
test_env();