aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_writer.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_writer.c')
-rw-r--r--test/test_writer.c109
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();