diff options
-rw-r--r-- | tests/env_test.c | 95 | ||||
-rw-r--r-- | tests/serd_test.c | 64 | ||||
-rw-r--r-- | wscript | 2 |
3 files changed, 97 insertions, 64 deletions
diff --git a/tests/env_test.c b/tests/env_test.c new file mode 100644 index 00000000..1ed7552e --- /dev/null +++ b/tests/env_test.c @@ -0,0 +1,95 @@ +/* + Copyright 2011-2020 David Robillard <http://drobilla.net> + + Permission to use, copy, modify, and/or distribute this software for any + purpose with or without fee is hereby granted, provided that the above + copyright notice and this permission notice appear in all copies. + + THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +*/ + +#undef NDEBUG + +#include "serd/serd.h" + +#include <assert.h> +#include <stdint.h> +#include <string.h> + +#define USTR(s) ((const uint8_t*)(s)) + +static SerdStatus +count_prefixes(void* handle, const SerdNode* name, const SerdNode* uri) +{ + (void)name; + (void)uri; + + ++*(int*)handle; + return SERD_SUCCESS; +} + +static void +test_env(void) +{ + SerdNode u = serd_node_from_string(SERD_URI, USTR("http://example.org/foo")); + SerdNode b = serd_node_from_string(SERD_CURIE, USTR("invalid")); + SerdNode c = serd_node_from_string(SERD_CURIE, USTR("eg.2:b")); + SerdEnv* env = serd_env_new(NULL); + serd_env_set_prefix_from_strings(env, USTR("eg.2"), USTR("http://example.org/")); + + assert(serd_env_set_base_uri(env, NULL)); + assert(serd_env_set_base_uri(env, &SERD_NODE_NULL)); + assert(serd_node_equals(serd_env_get_base_uri(env, NULL), &SERD_NODE_NULL)); + + SerdChunk prefix; + SerdChunk suffix; + assert(serd_env_expand(env, &b, &prefix, &suffix)); + + SerdNode xnode = serd_env_expand_node(env, &SERD_NODE_NULL); + assert(serd_node_equals(&xnode, &SERD_NODE_NULL)); + + SerdNode xu = serd_env_expand_node(env, &u); + assert(!strcmp((const char*)xu.buf, "http://example.org/foo")); + serd_node_free(&xu); + + SerdNode badpre = serd_node_from_string(SERD_CURIE, USTR("hm:what")); + SerdNode xbadpre = serd_env_expand_node(env, &badpre); + assert(serd_node_equals(&xbadpre, &SERD_NODE_NULL)); + + SerdNode xc = serd_env_expand_node(env, &c); + assert(!strcmp((const char*)xc.buf, "http://example.org/b")); + serd_node_free(&xc); + + assert(serd_env_set_prefix(env, &SERD_NODE_NULL, &SERD_NODE_NULL)); + + const SerdNode lit = serd_node_from_string(SERD_LITERAL, USTR("hello")); + assert(serd_env_set_prefix(env, &b, &lit)); + + const SerdNode blank = serd_node_from_string(SERD_BLANK, USTR("b1")); + const SerdNode xblank = serd_env_expand_node(env, &blank); + assert(serd_node_equals(&xblank, &SERD_NODE_NULL)); + + int n_prefixes = 0; + serd_env_set_prefix_from_strings(env, USTR("eg.2"), USTR("http://example.org/")); + serd_env_foreach(env, count_prefixes, &n_prefixes); + assert(n_prefixes == 1); + + SerdNode shorter_uri = serd_node_from_string(SERD_URI, USTR("urn:foo")); + SerdNode prefix_name; + assert(!serd_env_qualify(env, &shorter_uri, &prefix_name, &suffix)); + + serd_env_free(env); +} + +int +main(void) +{ + test_env(); + return 0; +} diff --git a/tests/serd_test.c b/tests/serd_test.c index d9bb3b0b..05fb0461 100644 --- a/tests/serd_test.c +++ b/tests/serd_test.c @@ -49,16 +49,6 @@ test_strtod(double dbl, double max_delta) assert(diff <= max_delta); } -static SerdStatus -count_prefixes(void* handle, const SerdNode* name, const SerdNode* uri) -{ - (void)name; - (void)uri; - - ++*(int*)handle; - return SERD_SUCCESS; -} - typedef struct { int n_statements; const SerdNode* graph; @@ -473,59 +463,6 @@ test_relative_uri(void) } static void -test_env(void) -{ - SerdNode u = serd_node_from_string(SERD_URI, USTR("http://example.org/foo")); - SerdNode b = serd_node_from_string(SERD_CURIE, USTR("invalid")); - SerdNode c = serd_node_from_string(SERD_CURIE, USTR("eg.2:b")); - SerdEnv* env = serd_env_new(NULL); - serd_env_set_prefix_from_strings(env, USTR("eg.2"), USTR("http://example.org/")); - - assert(serd_env_set_base_uri(env, NULL)); - assert(serd_env_set_base_uri(env, &SERD_NODE_NULL)); - assert(serd_node_equals(serd_env_get_base_uri(env, NULL), &SERD_NODE_NULL)); - - SerdChunk prefix; - SerdChunk suffix; - assert(serd_env_expand(env, &b, &prefix, &suffix)); - - SerdNode xnode = serd_env_expand_node(env, &SERD_NODE_NULL); - assert(serd_node_equals(&xnode, &SERD_NODE_NULL)); - - SerdNode xu = serd_env_expand_node(env, &u); - assert(!strcmp((const char*)xu.buf, "http://example.org/foo")); - serd_node_free(&xu); - - SerdNode badpre = serd_node_from_string(SERD_CURIE, USTR("hm:what")); - SerdNode xbadpre = serd_env_expand_node(env, &badpre); - assert(serd_node_equals(&xbadpre, &SERD_NODE_NULL)); - - SerdNode xc = serd_env_expand_node(env, &c); - assert(!strcmp((const char*)xc.buf, "http://example.org/b")); - serd_node_free(&xc); - - assert(serd_env_set_prefix(env, &SERD_NODE_NULL, &SERD_NODE_NULL)); - - const SerdNode lit = serd_node_from_string(SERD_LITERAL, USTR("hello")); - assert(serd_env_set_prefix(env, &b, &lit)); - - const SerdNode blank = serd_node_from_string(SERD_BLANK, USTR("b1")); - const SerdNode xblank = serd_env_expand_node(env, &blank); - assert(serd_node_equals(&xblank, &SERD_NODE_NULL)); - - int n_prefixes = 0; - serd_env_set_prefix_from_strings(env, USTR("eg.2"), USTR("http://example.org/")); - serd_env_foreach(env, count_prefixes, &n_prefixes); - assert(n_prefixes == 1); - - SerdNode shorter_uri = serd_node_from_string(SERD_URI, USTR("urn:foo")); - SerdNode prefix_name; - assert(!serd_env_qualify(env, &shorter_uri, &prefix_name, &suffix)); - - serd_env_free(env); -} - -static void test_writer(const char* const path) { FILE* fd = fopen(path, "wb"); @@ -716,7 +653,6 @@ main(void) test_node_from_substring(); test_uri_from_string(); test_relative_uri(); - test_env(); test_read_chunks(); const char* const path = "serd_test.ttl"; @@ -211,6 +211,7 @@ def build(bld): # Test programs for prog in [('serdi_static', 'src/serdi.c'), + ('env_test', 'tests/env_test.c'), ('read_chunk_test', 'tests/read_chunk_test.c'), ('serd_test', 'tests/serd_test.c')]: bld(features = 'c cprogram', @@ -533,6 +534,7 @@ def test(tst): srcdir = tst.path.abspath() with tst.group('Unit') as check: + check(['./env_test']) check(['./read_chunk_test']) check(['./serd_test']) |