aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_node.c
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2021-01-13 16:13:46 +0100
committerDavid Robillard <d@drobilla.net>2022-01-13 23:03:40 -0500
commitdcff19f69bb5cbd718d507e7af6814b997bc4c3f (patch)
treebe52e8387e6358601d5e2e7fcf094de6e0f98097 /test/test_node.c
parente2b1c1de25366f70db4cd00f1bb61eda513eb74b (diff)
downloadserd-dcff19f69bb5cbd718d507e7af6814b997bc4c3f.tar.gz
serd-dcff19f69bb5cbd718d507e7af6814b997bc4c3f.tar.bz2
serd-dcff19f69bb5cbd718d507e7af6814b997bc4c3f.zip
Simplify literal construction API
Diffstat (limited to 'test/test_node.c')
-rw-r--r--test/test_node.c66
1 files changed, 42 insertions, 24 deletions
diff --git a/test/test_node.c b/test/test_node.c
index bd3a5506..095d8755 100644
--- a/test/test_node.c
+++ b/test/test_node.c
@@ -35,6 +35,7 @@
#endif
#define NS_XSD "http://www.w3.org/2001/XMLSchema#"
+#define NS_RDF "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
static void
test_strtod(double dbl, double max_delta)
@@ -174,12 +175,13 @@ test_node_equals(void)
{
static const uint8_t replacement_char_str[] = {0xEF, 0xBF, 0xBD, 0};
- SerdNode* const lhs =
- serd_new_string(SERD_SUBSTRING((const char*)replacement_char_str, 3));
+ static const SerdStringView replacement_char = {
+ (const char*)replacement_char_str, 3};
- assert(serd_node_equals(lhs, lhs));
+ SerdNode* lhs = serd_new_string(replacement_char);
+ SerdNode* rhs = serd_new_string(SERD_STRING("123"));
- SerdNode* const rhs = serd_new_string(SERD_STRING("123"));
+ assert(serd_node_equals(lhs, lhs));
assert(!serd_node_equals(lhs, rhs));
SerdNode* const qnode = serd_new_curie(SERD_STRING("foo:bar"));
@@ -232,42 +234,58 @@ check_copy_equals(const SerdNode* const node)
static void
test_literal(void)
{
- SerdNode* hello2 = serd_new_literal(
- SERD_STRING("hello\""), SERD_EMPTY_STRING(), SERD_EMPTY_STRING());
+ SerdNode* hello2 = serd_new_string(SERD_STRING("hello\""));
assert(serd_node_length(hello2) == 6 &&
serd_node_flags(hello2) == SERD_HAS_QUOTE &&
!strcmp(serd_node_string(hello2), "hello\""));
+
check_copy_equals(hello2);
+
+ SerdNode* hello3 =
+ serd_new_plain_literal(SERD_STRING("hello\""), SERD_EMPTY_STRING());
+
+ assert(serd_node_equals(hello2, hello3));
+
+ SerdNode* hello4 =
+ serd_new_typed_literal(SERD_STRING("hello\""), SERD_EMPTY_STRING());
+
+ assert(!serd_new_typed_literal(SERD_STRING("plain"),
+ SERD_STRING(NS_RDF "langString")));
+
+ assert(serd_node_equals(hello4, hello2));
+
+ serd_node_free(hello4);
+ serd_node_free(hello3);
serd_node_free(hello2);
- SerdNode* hello_l = serd_new_literal(
- SERD_STRING("hello_l\""), SERD_EMPTY_STRING(), SERD_STRING("en"));
+ const char* lang_lit_str = "\"Hello\"@en";
+ SerdNode* sliced_lang_lit = serd_new_plain_literal(
+ SERD_SUBSTRING(lang_lit_str + 1, 5), SERD_SUBSTRING(lang_lit_str + 8, 2));
- assert(serd_node_length(hello_l) == 8);
- assert(!strcmp(serd_node_string(hello_l), "hello_l\""));
- assert(serd_node_flags(hello_l) == (SERD_HAS_QUOTE | SERD_HAS_LANGUAGE));
+ assert(!strcmp(serd_node_string(sliced_lang_lit), "Hello"));
- const SerdNode* const lang = serd_node_language(hello_l);
+ const SerdNode* const lang = serd_node_language(sliced_lang_lit);
assert(lang);
assert(!strcmp(serd_node_string(lang), "en"));
- check_copy_equals(hello_l);
- serd_node_free(hello_l);
+ check_copy_equals(sliced_lang_lit);
+ serd_node_free(sliced_lang_lit);
- SerdNode* hello_dt = serd_new_literal(SERD_STRING("hello_dt\""),
- SERD_STRING("http://example.org/Thing"),
- SERD_EMPTY_STRING());
+ const char* type_lit_str = "\"Hallo\"^^<http://example.org/Greeting>";
+ SerdNode* sliced_type_lit = serd_new_typed_literal(
+ SERD_SUBSTRING(type_lit_str + 1, 5), SERD_SUBSTRING(type_lit_str + 10, 27));
- assert(serd_node_length(hello_dt) == 9);
- assert(!strcmp(serd_node_string(hello_dt), "hello_dt\""));
- assert(serd_node_flags(hello_dt) == (SERD_HAS_QUOTE | SERD_HAS_DATATYPE));
+ assert(!strcmp(serd_node_string(sliced_type_lit), "Hallo"));
- const SerdNode* const datatype = serd_node_datatype(hello_dt);
+ const SerdNode* const datatype = serd_node_datatype(sliced_type_lit);
assert(datatype);
- assert(!strcmp(serd_node_string(datatype), "http://example.org/Thing"));
+ assert(!strcmp(serd_node_string(datatype), "http://example.org/Greeting"));
+ serd_node_free(sliced_type_lit);
- check_copy_equals(hello_dt);
- serd_node_free(hello_dt);
+ SerdNode* const plain_lit =
+ serd_new_plain_literal(SERD_STRING("Plain"), SERD_EMPTY_STRING());
+ assert(!strcmp(serd_node_string(plain_lit), "Plain"));
+ serd_node_free(plain_lit);
}
static void