aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_reader.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_reader.c')
-rw-r--r--test/test_reader.c120
1 files changed, 55 insertions, 65 deletions
diff --git a/test/test_reader.c b/test/test_reader.c
index 32b475f9..1c28e3da 100644
--- a/test/test_reader.c
+++ b/test/test_reader.c
@@ -71,15 +71,17 @@ test_prepare_error(void)
assert(reader);
- SerdByteSource* byte_source = serd_byte_source_new_function(
- prepare_test_read, prepare_test_error, NULL, f, NULL, 1);
+ SerdInputStream in =
+ serd_open_input_stream(prepare_test_read, prepare_test_error, NULL, f);
- SerdStatus st = serd_reader_start(reader, byte_source);
+ assert(serd_reader_start(reader, &in, NULL, 0) == SERD_ERR_BAD_ARG);
+
+ SerdStatus st = serd_reader_start(reader, &in, NULL, 1);
assert(!st);
assert(serd_reader_read_document(reader) == SERD_ERR_UNKNOWN);
- serd_byte_source_free(byte_source);
+ serd_close_input(&in);
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);
@@ -101,34 +103,38 @@ test_read_string(void)
assert(reader);
- SerdByteSource* byte_source =
- serd_byte_source_new_string("<http://example.org/s> <http://example.org/p> "
- "<http://example.org/o> .",
- NULL);
+ static const char* const string1 =
+ "<http://example.org/s> <http://example.org/p> "
+ "<http://example.org/o> .";
+
+ const char* position = string1;
+ SerdInputStream in = serd_open_input_string(&position);
// Test reading a string that ends exactly at the end of input (no newline)
- assert(!serd_reader_start(reader, byte_source));
+ assert(!serd_reader_start(reader, &in, NULL, 1));
assert(!serd_reader_read_document(reader));
assert(n_statements == 1);
assert(!serd_reader_finish(reader));
+ assert(!serd_close_input(&in));
+
+ static const char* const string2 =
+ "<http://example.org/s> <http://example.org/p> "
+ "<http://example.org/o> , _:blank .";
- // Test reading the same but as a chunk
- serd_byte_source_free(byte_source);
+ // Test reading a chunk
n_statements = 0;
- byte_source =
- serd_byte_source_new_string("<http://example.org/s> <http://example.org/p> "
- "<http://example.org/o> , _:blank .",
- NULL);
+ position = string2;
+ in = serd_open_input_string(&position);
- assert(!serd_reader_start(reader, byte_source));
+ assert(!serd_reader_start(reader, &in, NULL, 1));
assert(!serd_reader_read_chunk(reader));
assert(n_statements == 2);
assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
assert(!serd_reader_finish(reader));
+ assert(!serd_close_input(&in));
serd_reader_free(reader);
serd_env_free(env);
- serd_byte_source_free(byte_source);
serd_sink_free(sink);
serd_world_free(world);
}
@@ -195,16 +201,16 @@ test_read_eof_by_page(void)
SerdReader* reader = serd_reader_new(world, SERD_TURTLE, 0u, env, sink, 4096);
- SerdByteSource* byte_source = serd_byte_source_new_function(
- (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, NULL, temp, NULL, 4096);
+ SerdInputStream in = serd_open_input_stream(
+ (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, NULL, temp);
- assert(serd_reader_start(reader, byte_source) == SERD_SUCCESS);
+ assert(serd_reader_start(reader, &in, NULL, 4096) == SERD_SUCCESS);
assert(serd_reader_read_chunk(reader) == SERD_SUCCESS);
assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
assert(!serd_reader_finish(reader));
+ assert(!serd_close_input(&in));
- serd_byte_source_free(byte_source);
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);
@@ -224,22 +230,20 @@ test_read_eof_by_byte(void)
SerdReader* reader = serd_reader_new(world, SERD_TURTLE, 0u, env, sink, 4096);
size_t n_reads = 0u;
- SerdByteSource* byte_source =
- serd_byte_source_new_function((SerdReadFunc)eof_test_read,
- (SerdStreamErrorFunc)eof_test_error,
- NULL,
- &n_reads,
- NULL,
- 1);
-
- assert(serd_reader_start(reader, byte_source) == SERD_SUCCESS);
+ SerdInputStream in =
+ serd_open_input_stream((SerdReadFunc)eof_test_read,
+ (SerdStreamErrorFunc)eof_test_error,
+ NULL,
+ &n_reads);
+
+ assert(serd_reader_start(reader, &in, NULL, 1) == SERD_SUCCESS);
assert(serd_reader_read_chunk(reader) == SERD_SUCCESS);
assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
assert(serd_reader_read_chunk(reader) == SERD_SUCCESS);
assert(serd_reader_read_chunk(reader) == SERD_FAILURE);
assert(!serd_reader_finish(reader));
+ assert(!serd_close_input(&in));
- serd_byte_source_free(byte_source);
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);
@@ -263,10 +267,10 @@ test_read_chunks(void)
assert(reader);
- SerdByteSource* byte_source = serd_byte_source_new_function(
- (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, NULL, f, NULL, 1);
+ SerdInputStream in = serd_open_input_stream(
+ (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, NULL, f);
- SerdStatus st = serd_reader_start(reader, byte_source);
+ SerdStatus st = serd_reader_start(reader, &in, NULL, 1);
assert(st == SERD_SUCCESS);
// Write two statement separated by null characters
@@ -307,7 +311,7 @@ test_read_chunks(void)
assert(st == SERD_FAILURE);
assert(n_statements == 2);
- serd_byte_source_free(byte_source);
+ assert(!serd_close_input(&in));
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);
@@ -315,26 +319,6 @@ test_read_chunks(void)
serd_world_free(world);
}
-static size_t
-empty_test_read(void* buf, size_t size, size_t nmemb, void* stream)
-{
- (void)buf;
- (void)size;
- (void)nmemb;
- (void)stream;
-
- assert(false);
-
- return 0;
-}
-
-static int
-empty_test_error(void* stream)
-{
- (void)stream;
- return 0;
-}
-
/// Test that reading SERD_SYNTAX_EMPTY "succeeds" without reading any input
static void
test_read_empty(void)
@@ -352,16 +336,17 @@ test_read_empty(void)
assert(reader);
- SerdByteSource* byte_source = serd_byte_source_new_function(
- empty_test_read, empty_test_error, NULL, f, NULL, 1);
+ SerdInputStream in = serd_open_input_stream(
+ (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, NULL, f);
- SerdStatus st = serd_reader_start(reader, byte_source);
+ SerdStatus st = serd_reader_start(reader, &in, NULL, 1);
assert(!st);
assert(serd_reader_read_document(reader) == SERD_SUCCESS);
assert(n_statements == 0);
+ assert(!serd_reader_finish(reader));
+ assert(!serd_close_input(&in));
- serd_byte_source_free(byte_source);
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);
@@ -400,17 +385,22 @@ test_error_cursor(void)
assert(sink);
assert(reader);
- SerdByteSource* byte_source =
- serd_byte_source_new_string("<http://example.org/s> <http://example.org/p> "
- "<http://example.org/o> .",
- NULL);
+ static const char* const string =
+ "<http://example.org/s> <http://example.org/p> "
+ "<http://example.org/o> .";
+
+ SerdNode* const string_name = serd_new_string(SERD_STRING("string"));
+ const char* position = string;
+ SerdInputStream in = serd_open_input_string(&position);
- SerdStatus st = serd_reader_start(reader, byte_source);
+ SerdStatus st = serd_reader_start(reader, &in, string_name, 1);
assert(!st);
assert(serd_reader_read_document(reader) == SERD_SUCCESS);
+ assert(!serd_reader_finish(reader));
assert(called);
+ assert(!serd_close_input(&in));
- serd_byte_source_free(byte_source);
+ serd_node_free(string_name);
serd_reader_free(reader);
serd_env_free(env);
serd_sink_free(sink);