diff options
Diffstat (limited to 'test/test_writer.c')
-rw-r--r-- | test/test_writer.c | 109 |
1 files changed, 71 insertions, 38 deletions
diff --git a/test/test_writer.c b/test/test_writer.c index fe685437..2a852562 100644 --- a/test/test_writer.c +++ b/test/test_writer.c @@ -8,6 +8,7 @@ #include "serd/event.h" #include "serd/memory.h" #include "serd/node.h" +#include "serd/output_stream.h" #include "serd/sink.h" #include "serd/statement.h" #include "serd/status.h" @@ -23,23 +24,39 @@ #include <string.h> static void +test_writer_new(void) +{ + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); + + assert(!serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 0U)); + + serd_world_free(world); + serd_env_free(env); +} + +static void test_write_bad_event(void) { - SerdWorld* world = serd_world_new(); - SerdEnv* env = serd_env_new(serd_empty_string()); - SerdBuffer buffer = {NULL, 0}; - SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, serd_buffer_write, &buffer); + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); + SerdWriter* writer = + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); assert(writer); const SerdEvent event = {(SerdEventType)42}; assert(serd_sink_write_event(serd_writer_sink(writer), &event) == SERD_BAD_ARG); - serd_buffer_close(&buffer); + assert(!serd_close_output(&output)); char* const out = (char*)buffer.buf; + assert(out); assert(!strcmp(out, "")); serd_free(out); @@ -51,11 +68,12 @@ test_write_bad_event(void) static void test_write_bad_prefix(void) { - SerdWorld* world = serd_world_new(); - SerdEnv* env = serd_env_new(serd_empty_string()); - SerdBuffer buffer = {NULL, 0}; - SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, serd_buffer_write, &buffer); + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); + SerdWriter* writer = + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); assert(writer); @@ -81,12 +99,13 @@ test_write_bad_prefix(void) static void test_write_long_literal(void) { - SerdWorld* world = serd_world_new(); - SerdEnv* env = serd_env_new(serd_empty_string()); - SerdBuffer buffer = {NULL, 0}; - SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, serd_buffer_write, &buffer); + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); + SerdWriter* writer = + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); assert(writer); SerdNode* s = serd_new_uri(serd_string("http://example.org/s")); @@ -99,6 +118,7 @@ test_write_long_literal(void) serd_node_free(p); serd_node_free(s); serd_writer_free(writer); + serd_close_output(&output); serd_env_free(env); serd_buffer_close(&buffer); @@ -108,7 +128,7 @@ test_write_long_literal(void) "<http://example.org/s>\n" "\t<http://example.org/p> \"\"\"hello \"\"\\\"world\"\"\\\"!\"\"\" .\n"; - assert(!strcmp((char*)out, expected)); + assert(!strcmp(out, expected)); serd_free(out); serd_world_free(world); @@ -129,11 +149,14 @@ null_sink(const void* const buf, static void test_writer_cleanup(void) { - SerdStatus st = SERD_SUCCESS; - SerdWorld* world = serd_world_new(); - SerdEnv* env = serd_env_new(serd_empty_string()); + SerdStatus st = SERD_SUCCESS; + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdOutputStream output = + serd_open_output_stream(null_sink, NULL, NULL, NULL); + SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, null_sink, NULL); + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); const SerdSink* sink = serd_writer_sink(writer); @@ -183,8 +206,9 @@ test_strict_write(void) SerdWorld* world = serd_world_new(); SerdEnv* const env = serd_env_new(serd_empty_string()); + SerdOutputStream out = serd_open_output_stream(null_sink, NULL, NULL, fd); SerdWriter* const writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, null_sink, fd); + serd_writer_new(world, SERD_TURTLE, 0U, env, &out, 1U); assert(writer); @@ -229,15 +253,16 @@ error_sink(const void* const buf, static void test_write_error(void) { - SerdWorld* const world = serd_world_new(); - SerdEnv* const env = serd_env_new(serd_empty_string()); + SerdWorld* const world = serd_world_new(); + SerdEnv* const env = serd_env_new(serd_empty_string()); + SerdOutputStream out = serd_open_output_stream(error_sink, NULL, NULL, NULL); SerdWriter* writer = NULL; SerdStatus st = SERD_SUCCESS; SerdNode* u = serd_new_uri(serd_string("http://example.com/u")); - writer = serd_writer_new( - world, SERD_TURTLE, (SerdWriterFlags)0, env, error_sink, NULL); + writer = + serd_writer_new(world, SERD_TURTLE, (SerdWriterFlags)0, env, &out, 1U); assert(writer); const SerdSink* const sink = serd_writer_sink(writer); @@ -257,8 +282,11 @@ test_writer_stack_overflow(void) SerdWorld* world = serd_world_new(); SerdEnv* env = serd_env_new(serd_empty_string()); + SerdOutputStream output = + serd_open_output_stream(null_sink, NULL, NULL, NULL); + SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, null_sink, NULL); + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); const SerdSink* sink = serd_writer_sink(writer); @@ -293,6 +321,7 @@ test_writer_stack_overflow(void) serd_node_free(p); serd_node_free(s); serd_writer_free(writer); + serd_close_output(&output); serd_env_free(env); serd_world_free(world); } @@ -307,18 +336,19 @@ test_write_empty_syntax(void) SerdNode* p = serd_new_uri(serd_string("http://example.org/p")); SerdNode* o = serd_new_curie(serd_string("eg:o")); - SerdBuffer buffer = {NULL, 0}; + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); - SerdWriter* writer = serd_writer_new( - world, SERD_SYNTAX_EMPTY, 0U, env, serd_buffer_write, &buffer); + SerdWriter* writer = + serd_writer_new(world, SERD_SYNTAX_EMPTY, 0U, env, &output, 1U); assert(writer); assert(!serd_sink_write(serd_writer_sink(writer), 0U, s, p, o, NULL)); - - serd_buffer_close(&buffer); + assert(!serd_close_output(&output)); char* const out = (char*)buffer.buf; + assert(out); assert(strlen(out) == 0); serd_free(out); @@ -326,6 +356,7 @@ test_write_empty_syntax(void) serd_node_free(o); serd_node_free(p); serd_node_free(s); + serd_close_output(&output); serd_env_free(env); serd_world_free(world); } @@ -333,13 +364,13 @@ test_write_empty_syntax(void) static void check_pname_escape(const char* const lname, const char* const expected) { - SerdWorld* world = serd_world_new(); - SerdEnv* env = serd_env_new(serd_empty_string()); - SerdBuffer buffer = {NULL, 0}; + SerdWorld* world = serd_world_new(); + SerdEnv* env = serd_env_new(serd_empty_string()); + SerdBuffer buffer = {NULL, 0}; + SerdOutputStream output = serd_open_output_buffer(&buffer); SerdWriter* writer = - serd_writer_new(world, SERD_TURTLE, 0U, env, serd_buffer_write, &buffer); - + serd_writer_new(world, SERD_TURTLE, 0U, env, &output, 1U); assert(writer); static const char* const prefix = "http://example.org/"; @@ -362,11 +393,12 @@ check_pname_escape(const char* const lname, const char* const expected) serd_node_free(p); serd_node_free(s); serd_writer_free(writer); + serd_close_output(&output); serd_env_free(env); serd_buffer_close(&buffer); char* const out = (char*)buffer.buf; - assert(!strcmp((char*)out, expected)); + assert(!strcmp(out, expected)); serd_free(out); serd_world_free(world); @@ -406,6 +438,7 @@ test_write_pname_escapes(void) int main(void) { + test_writer_new(); test_write_bad_event(); test_write_bad_prefix(); test_write_long_literal(); |