From eead5e3a6c680e6b5a084e90cb5619ae7aef820e Mon Sep 17 00:00:00 2001 From: John Kerl Date: Tue, 1 Sep 2015 21:38:56 -0400 Subject: [PATCH] [read performance iterate] byte-reader intf/impls --- .gitignore | 1 + c/input/byte_readers.h | 9 +++++++++ c/input/string_byte_reader.c | 2 +- c/input/test_string_byte_reader.c | 33 ++++++++++++++++++++++++------- 4 files changed, 37 insertions(+), 8 deletions(-) create mode 100644 c/input/byte_readers.h diff --git a/.gitignore b/.gitignore index 7abc26d40..83b2014d6 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ mlrp mlr-unit-tester test-mlrutil test-string-builder +test-string-byte-reader test-lrec test-join-bucket-keeper termcvt diff --git a/c/input/byte_readers.h b/c/input/byte_readers.h new file mode 100644 index 000000000..ea02ec516 --- /dev/null +++ b/c/input/byte_readers.h @@ -0,0 +1,9 @@ +#ifndef BYTE_READERS_H +#define BYTE_READERS_H +#include "input/byte_reader.h" + +byte_reader_t* string_byte_reader_alloc(); + +void string_byte_reader_free(byte_reader_t* pbr); + +#endif // BYTE_READERS_H diff --git a/c/input/string_byte_reader.c b/c/input/string_byte_reader.c index 8bcbf1cec..ce4d9067b 100644 --- a/c/input/string_byte_reader.c +++ b/c/input/string_byte_reader.c @@ -1,5 +1,5 @@ #include // For definition of EOF -#include "input/byte_reader.h" +#include "input/byte_readers.h" #include "lib/mlrutil.h" typedef struct _string_byte_reader_state_t { diff --git a/c/input/test_string_byte_reader.c b/c/input/test_string_byte_reader.c index 080d77274..12360bd90 100644 --- a/c/input/test_string_byte_reader.c +++ b/c/input/test_string_byte_reader.c @@ -1,10 +1,8 @@ #include #include -#include "lib/minunit.h" #include "lib/mlrutil.h" -#include "containers/lrec.h" -#include "containers/sllv.h" -#include "input/lrec_readers.h" +#include "lib/minunit.h" +#include "input/byte_readers.h" #ifdef __TEST_STRING_BYTE_READER_MAIN__ int tests_run = 0; @@ -14,9 +12,30 @@ int assertions_failed = 0; // ---------------------------------------------------------------- static char* test_it() { - mu_assert_lf(0 == 0); - mu_assert_lf(1 == 1); - mu_assert_lf(2 == 2); + byte_reader_t* pbr = string_byte_reader_alloc(); + + int ok = pbr->popen_func(pbr, ""); + mu_assert_lf(ok == TRUE); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + pbr->pclose_func(pbr); + + ok = pbr->popen_func(pbr, "a"); + mu_assert_lf(ok == TRUE); + mu_assert_lf(pbr->pread_func(pbr) == 'a'); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + pbr->pclose_func(pbr); + + ok = pbr->popen_func(pbr, "abc"); + mu_assert_lf(ok == TRUE); + mu_assert_lf(pbr->pread_func(pbr) == 'a'); + mu_assert_lf(pbr->pread_func(pbr) == 'b'); + mu_assert_lf(pbr->pread_func(pbr) == 'c'); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + mu_assert_lf(pbr->pread_func(pbr) == EOF); + pbr->pclose_func(pbr); return NULL; }