aboutsummaryrefslogtreecommitdiffstats
path: root/test_creole.c
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-05 11:44:37 +0000
committerGravatar Peter McGoron 2023-02-05 11:44:37 +0000
commitf63d6cdd3df24d869437f9f689cbfff5d4bfb435 (patch)
treeee6c907242abe6d27edd87cf87979db6c928693a /test_creole.c
prototype bytecode interpreter
Diffstat (limited to 'test_creole.c')
-rw-r--r--test_creole.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/test_creole.c b/test_creole.c
new file mode 100644
index 0000000..b8dc008
--- /dev/null
+++ b/test_creole.c
@@ -0,0 +1,44 @@
+#include "greatest.h"
+GREATEST_MAIN_DEFS();
+#include "creole.c"
+
+/**************************************************************************
+ * Reader suite
+ *************************************************************************/
+#define reader_lit(r, s) do { \
+ r.p = (unsigned char *)s; \
+ r.left = sizeof(s) - 1; \
+} while(0)
+
+TEST reader_test_basic(struct creole_reader *r) {
+ size_t i = 0;
+ unsigned char *s = r->p;
+ size_t len = r->left;
+
+ for (i = 0; i < len; i++) {
+ ASSERT_EQ(read_eof(r), 0);
+ ASSERT_EQ(read(r), s[i]);
+ }
+
+ for (i = 0; i < 5; i++) {
+ ASSERT_EQ(read_eof(r), 1);
+ ASSERT_EQ(read(r), -1);
+ }
+ PASS();
+}
+
+SUITE(reader) {
+ struct creole_reader r = {0};
+
+ reader_lit(r, "abcdefg");
+ RUN_TEST1(reader_test_basic, &r);
+
+ reader_lit(r, "");
+ RUN_TEST1(reader_test_basic, &r);
+}
+
+int main(int argc, char *argv[]) {
+ GREATEST_MAIN_BEGIN();
+ RUN_SUITE(reader);
+ GREATEST_MAIN_END();
+}