From eb804125430e3445e85c423b28e1c41346772ed0 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Fri, 10 Sep 2021 13:20:47 -0400 Subject: Make environments and sinks part of the world Although functions/components that require minimal pre-existing state are nice, these allocate memory and could potentially share resources. So, give them a pointer to a world which can be used to configure such things. In particular, this is working towards supporting custom allocators everywhere. --- test/test_env.c | 80 ++++++++++++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 26 deletions(-) (limited to 'test/test_env.c') diff --git a/test/test_env.c b/test/test_env.c index 3b6e20c9..e2d53f6c 100644 --- a/test/test_env.c +++ b/test/test_env.c @@ -28,7 +28,10 @@ test_copy(void) { assert(!serd_env_copy(NULL)); - SerdEnv* const env = serd_env_new(SERD_STRING("http://example.org/base/")); + SerdWorld* const world = serd_world_new(); + + SerdEnv* const env = + serd_env_new(world, SERD_STRING("http://example.org/base/")); serd_env_set_prefix( env, SERD_STRING("eg"), SERD_STRING("http://example.org/")); @@ -49,12 +52,14 @@ test_copy(void) serd_env_free(env_copy); serd_env_free(env); + serd_world_free(world); } static void test_comparison(void) { - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_equals(env, NULL)); assert(!serd_env_equals(NULL, env)); @@ -62,6 +67,7 @@ test_comparison(void) assert(serd_env_equals(env, env)); serd_env_free(env); + serd_world_free(world); } static void @@ -89,8 +95,9 @@ count_prefixes(void* handle, const SerdEvent* event) static void test_base_uri(void) { - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); - SerdNode* const eg = serd_new_uri(SERD_STRING(NS_EG)); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); + SerdNode* const eg = serd_new_uri(SERD_STRING(NS_EG)); // Test that invalid calls work as expected assert(!serd_env_base_uri(env)); @@ -109,8 +116,9 @@ test_base_uri(void) assert(!serd_env_set_base_uri(env, SERD_EMPTY_STRING())); assert(!serd_env_base_uri(env)); - serd_env_free(env); serd_node_free(eg); + serd_env_free(env); + serd_world_free(world); } static void @@ -122,7 +130,8 @@ test_set_prefix(void) static const SerdStringView rel = SERD_STRING("rel"); static const SerdStringView base = SERD_STRING("http://example.org/"); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); // Set a valid prefix assert(!serd_env_set_prefix(env, name1, eg)); @@ -138,25 +147,28 @@ test_set_prefix(void) size_t n_prefixes = 0; SerdSink* const count_prefixes_sink = - serd_sink_new(&n_prefixes, count_prefixes, NULL); + serd_sink_new(world, &n_prefixes, count_prefixes, NULL); serd_env_write_prefixes(env, count_prefixes_sink); serd_sink_free(count_prefixes_sink); assert(n_prefixes == 3); serd_env_free(env); + serd_world_free(world); } static void test_expand_untyped_literal(void) { - SerdNode* const untyped = serd_new_string(SERD_STRING("data")); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdNode* const untyped = serd_new_string(SERD_STRING("data")); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_expand_node(env, untyped)); serd_env_free(env); serd_node_free(untyped); + serd_world_free(world); } static void @@ -164,17 +176,19 @@ test_expand_bad_uri_datatype(void) { static const SerdStringView type = SERD_STRING("Type"); + SerdWorld* world = serd_world_new(); SerdNodes* nodes = serd_nodes_new(); const SerdNode* const typed = serd_nodes_literal(nodes, SERD_STRING("data"), SERD_HAS_DATATYPE, type); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_expand_node(env, typed)); serd_env_free(env); serd_nodes_free(nodes); + serd_world_free(world); } static void @@ -182,11 +196,12 @@ test_expand_uri(void) { static const SerdStringView base = SERD_STRING("http://example.org/b/"); - SerdEnv* const env = serd_env_new(base); - SerdNode* const rel = serd_new_uri(SERD_STRING("rel")); - SerdNode* const rel_out = serd_env_expand_node(env, rel); - SerdNode* const empty = serd_new_uri(SERD_EMPTY_STRING()); - SerdNode* const empty_out = serd_env_expand_node(env, empty); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, base); + SerdNode* const rel = serd_new_uri(SERD_STRING("rel")); + SerdNode* const rel_out = serd_env_expand_node(env, rel); + SerdNode* const empty = serd_new_uri(SERD_EMPTY_STRING()); + SerdNode* const empty_out = serd_env_expand_node(env, empty); assert(!strcmp(serd_node_string(rel_out), "http://example.org/b/rel")); assert(!strcmp(serd_node_string(empty_out), "http://example.org/b/")); @@ -196,6 +211,7 @@ test_expand_uri(void) serd_node_free(rel_out); serd_node_free(rel); serd_env_free(env); + serd_world_free(world); } static void @@ -203,27 +219,31 @@ test_expand_empty_uri_ref(void) { static const SerdStringView base = SERD_STRING("http://example.org/b/"); - SerdNode* const rel = serd_new_uri(SERD_STRING("rel")); - SerdEnv* const env = serd_env_new(base); - SerdNode* const rel_out = serd_env_expand_node(env, rel); + SerdWorld* const world = serd_world_new(); + SerdNode* const rel = serd_new_uri(SERD_STRING("rel")); + SerdEnv* const env = serd_env_new(world, base); + SerdNode* const rel_out = serd_env_expand_node(env, rel); assert(!strcmp(serd_node_string(rel_out), "http://example.org/b/rel")); serd_node_free(rel_out); serd_env_free(env); serd_node_free(rel); + serd_world_free(world); } static void test_expand_bad_uri(void) { - SerdNode* const bad_uri = serd_new_uri(SERD_STRING("rel")); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdNode* const bad_uri = serd_new_uri(SERD_STRING("rel")); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_expand_node(env, bad_uri)); serd_env_free(env); serd_node_free(bad_uri); + serd_world_free(world); } static void @@ -232,7 +252,8 @@ test_expand_curie(void) static const SerdStringView name = SERD_STRING("eg.1"); static const SerdStringView eg = SERD_STRING(NS_EG); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_set_prefix(env, name, eg)); @@ -244,12 +265,14 @@ test_expand_curie(void) serd_node_free(expanded); serd_env_free(env); + serd_world_free(world); } static void test_expand_bad_curie(void) { - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_expand_curie(NULL, SERD_EMPTY_STRING())); assert(!serd_env_expand_curie(NULL, SERD_STRING("what:ever"))); @@ -257,18 +280,21 @@ test_expand_bad_curie(void) assert(!serd_env_expand_curie(env, SERD_STRING("nocolon"))); serd_env_free(env); + serd_world_free(world); } static void test_expand_blank(void) { - SerdNode* const blank = serd_new_token(SERD_BLANK, SERD_STRING("b1")); - SerdEnv* const env = serd_env_new(SERD_EMPTY_STRING()); + SerdWorld* const world = serd_world_new(); + SerdNode* const blank = serd_new_token(SERD_BLANK, SERD_STRING("b1")); + SerdEnv* const env = serd_env_new(world, SERD_EMPTY_STRING()); assert(!serd_env_expand_node(env, blank)); serd_env_free(env); serd_node_free(blank); + serd_world_free(world); } static void @@ -278,8 +304,9 @@ test_equals(void) static const SerdStringView base1 = SERD_STRING(NS_EG "b1/"); static const SerdStringView base2 = SERD_STRING(NS_EG "b2/"); - SerdEnv* const env1 = serd_env_new(base1); - SerdEnv* const env2 = serd_env_new(base2); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env1 = serd_env_new(world, base1); + SerdEnv* const env2 = serd_env_new(world, base2); assert(!serd_env_equals(env1, NULL)); assert(!serd_env_equals(NULL, env1)); @@ -305,6 +332,7 @@ test_equals(void) serd_env_free(env1); serd_env_free(env2); + serd_world_free(world); } int -- cgit v1.2.1