From d5dc0ea200f6f16dc0799b08ab5cc347ad92f530 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sun, 30 Dec 2018 12:34:24 -0500 Subject: Simplify reader test sink --- tests/serd_test.c | 63 +++++++++++++++++++++++++------------------------------ 1 file changed, 29 insertions(+), 34 deletions(-) (limited to 'tests') diff --git a/tests/serd_test.c b/tests/serd_test.c index 6e69fc0d..26515833 100644 --- a/tests/serd_test.c +++ b/tests/serd_test.c @@ -50,20 +50,15 @@ test_strtod(double dbl, double max_delta) assert(end == strlen(buf)); } -typedef struct { - int n_statements; -} ReaderTest; - static SerdStatus -test_sink(void* handle, - SerdStatementFlags flags, - const SerdStatement* statement) +count_statements(void* handle, + SerdStatementFlags flags, + const SerdStatement* statement) { (void)flags; (void)statement; - ReaderTest* rt = (ReaderTest*)handle; - ++rt->n_statements; + ++*(size_t*)handle; return SERD_SUCCESS; } @@ -120,18 +115,19 @@ test_file_uri(const char* hostname, static void test_read_chunks(void) { - SerdWorld* world = serd_world_new(); - ReaderTest* const rt = (ReaderTest*)calloc(1, sizeof(ReaderTest)); - FILE* const f = tmpfile(); - static const char null = 0; - SerdSink* sink = serd_sink_new(rt); - SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 4096); + SerdWorld* world = serd_world_new(); + size_t n_statements = 0; + FILE* const f = tmpfile(); + static const char null = 0; + SerdSink* sink = serd_sink_new(&n_statements); + + assert(sink); + serd_sink_set_statement_func(sink, count_statements); + SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 4096); assert(reader); assert(f); - serd_sink_set_statement_func(sink, test_sink); - SerdStatus st = serd_reader_start_stream(reader, (SerdReadFunc)fread, (SerdStreamErrorFunc)ferror, @@ -151,37 +147,36 @@ test_read_chunks(void) // Read prefix st = serd_reader_read_chunk(reader); assert(st == SERD_SUCCESS); - assert(rt->n_statements == 0); + assert(n_statements == 0); // Read first statement st = serd_reader_read_chunk(reader); assert(st == SERD_SUCCESS); - assert(rt->n_statements == 1); + assert(n_statements == 1); // Read terminator st = serd_reader_read_chunk(reader); assert(st == SERD_FAILURE); - assert(rt->n_statements == 1); + assert(n_statements == 1); // Read second statement (after null terminator) st = serd_reader_read_chunk(reader); assert(st == SERD_SUCCESS); - assert(rt->n_statements == 2); + assert(n_statements == 2); // Read terminator st = serd_reader_read_chunk(reader); assert(st == SERD_FAILURE); - assert(rt->n_statements == 2); + assert(n_statements == 2); // EOF st = serd_reader_read_chunk(reader); assert(st == SERD_FAILURE); - assert(rt->n_statements == 2); + assert(n_statements == 2); serd_reader_free(reader); serd_sink_free(sink); fclose(f); - free(rt); serd_world_free(world); } @@ -205,13 +200,13 @@ test_get_blank(void) static void test_read_string(void) { - SerdWorld* world = serd_world_new(); - ReaderTest* const rt = (ReaderTest*)calloc(1, sizeof(ReaderTest)); - SerdSink* sink = serd_sink_new(rt); - SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 4096); + SerdWorld* world = serd_world_new(); + size_t n_statements = 0; + SerdSink* sink = serd_sink_new(&n_statements); + SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 4096); assert(reader); - serd_sink_set_statement_func(sink, test_sink); + serd_sink_set_statement_func(sink, count_statements); // Test reading a string that ends exactly at the end of input (no newline) assert(!serd_reader_start_string( @@ -221,7 +216,7 @@ test_read_string(void) NULL)); assert(!serd_reader_read_document(reader)); - assert(rt->n_statements == 1); + assert(n_statements == 1); assert(!serd_reader_finish(reader)); serd_reader_free(reader); @@ -706,9 +701,9 @@ test_reader(const char* path) { SerdWorld* world = serd_world_new(); - ReaderTest rt = { 0 }; - SerdSink* sink = serd_sink_new(&rt); - serd_sink_set_statement_func(sink, test_sink); + size_t n_statements = 0; + SerdSink* sink = serd_sink_new(&n_statements); + serd_sink_set_statement_func(sink, count_statements); SerdReader* reader = serd_reader_new(world, SERD_TURTLE, sink, 4096); assert(reader); @@ -722,7 +717,7 @@ test_reader(const char* path) assert(!serd_reader_start_file(reader, path, true)); assert(!serd_reader_read_document(reader)); - assert(rt.n_statements == 13); + assert(n_statements == 13); serd_reader_finish(reader); // A read of a big page hits EOF then fails to read chunks immediately -- cgit v1.2.1