aboutsummaryrefslogtreecommitdiffstats
path: root/c_test/creole.c
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-07 17:48:28 +0000
committerGravatar Peter McGoron 2023-02-07 17:48:28 +0000
commit705346372df1fee924c3f6d8bb7413fa2ed587e8 (patch)
treee5b4d2e04935faf584ff45f92b209057cfbafaae /c_test/creole.c
parentmove python (diff)
move tests
Diffstat (limited to 'c_test/creole.c')
-rw-r--r--c_test/creole.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/c_test/creole.c b/c_test/creole.c
new file mode 100644
index 0000000..5f73cd6
--- /dev/null
+++ b/c_test/creole.c
@@ -0,0 +1,104 @@
+#include "greatest.h"
+GREATEST_MAIN_DEFS();
+#include "../creole.c"
+
+/**************************************************************************
+ * Reader
+ *************************************************************************/
+#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);
+}
+
+#if 0
+TEST encode_decode_byte_seq(struct seq *s) {
+ unsigned char buf[7];
+ struct creole_reader r = {0};
+ struct word w;
+ creole_word i = 0;
+
+ for (;;) {
+ ASSERT_EQ(creole_encode(i, s->encode_to, s->high_bits,
+ buf), 1);
+ r.p = buf;
+ r.left = s->encode_to;
+ ASSERT_EQ(decode_seq(&r, &w), 1);
+ ASSERT_EQ(w.len, s->encode_to);
+ ASSERT_EQ(w.high_bits, s->high_bits);
+ ASSERT_EQ(w.word, i);
+
+ if (i == s->max)
+ break;
+ i++;
+ }
+
+ PASS();
+}
+SUITE(pseudo_utf8_encode_all) {
+ struct seq s;
+
+ s.max = 0x7F;
+ s.encode_to = 1;
+ s.high_bits = 0;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ for (s.high_bits = 0; s.high_bits < 16; s.high_bits++) {
+ s.max = 0x7F;
+ s.encode_to = 2;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ s.max = 0xFFF;
+ s.encode_to = 3;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ s.max = 0x1FFFF;
+ s.encode_to = 4;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ s.max = 0x3FFFFF;
+ s.encode_to = 5;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ s.max = 0x7FFFFFF;
+ s.encode_to = 6;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+
+ s.max = 0xFFFFFFFF;
+ s.encode_to = 7;
+ RUN_TEST1(encode_decode_byte_seq, &s);
+ }
+}
+#endif
+
+int main(int argc, char *argv[]) {
+ GREATEST_MAIN_BEGIN();
+ RUN_SUITE(reader);
+ GREATEST_MAIN_END();
+}