about summary refs log tree commit diff stats
path: root/tests
diff options
context:
space:
mode:
authorAli Fardan <raiz@stellarbound.space>2020-10-23 10:28:23 +0300
committerAli Fardan <raiz@stellarbound.space>2020-10-23 10:28:23 +0300
commitd83415b045a95827aaba5c7aee4633661a8bc019 (patch)
tree5f3bf0781c07be21d3d84831efac1d389d64cf12 /tests
parent2ff8a2f77461a5393fb62d04fd8d4789cecce0b0 (diff)
downloadlibgemtext-d83415b045a95827aaba5c7aee4633661a8bc019.tar.gz
write tests for gemtext_decode()
Diffstat (limited to 'tests')
-rw-r--r--tests/Makefile4
-rw-r--r--tests/test.c511
-rw-r--r--tests/test.gmi57
-rw-r--r--tests/test1.gmi1
-rw-r--r--tests/test10.gmi1
-rw-r--r--tests/test11.gmi1
-rw-r--r--tests/test12.gmi1
-rw-r--r--tests/test13.gmi1
-rw-r--r--tests/test14.gmi1
-rw-r--r--tests/test15.gmi8
-rw-r--r--tests/test16.gmi1
-rw-r--r--tests/test17.gmi1
-rw-r--r--tests/test18.gmi1
-rw-r--r--tests/test19.gmi1
-rw-r--r--tests/test2.gmi1
-rw-r--r--tests/test20.gmi1
-rw-r--r--tests/test21.gmi1
-rw-r--r--tests/test3.gmi1
-rw-r--r--tests/test4.gmi30
-rw-r--r--tests/test5.gmi1
-rw-r--r--tests/test6.gmi1
-rw-r--r--tests/test7.gmi1
-rw-r--r--tests/test8.gmi1
-rw-r--r--tests/test9.gmi0
24 files changed, 628 insertions, 0 deletions
diff --git a/tests/Makefile b/tests/Makefile
new file mode 100644
index 0000000..6cf5566
--- /dev/null
+++ b/tests/Makefile
@@ -0,0 +1,4 @@
+decode:
+	@cc -w -g -o test test.c ../libgemtext.a
+	@./test
+	@rm test
diff --git a/tests/test.c b/tests/test.c
new file mode 100644
index 0000000..9ac07b6
--- /dev/null
+++ b/tests/test.c
@@ -0,0 +1,511 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "../gemtext.h"
+
+const char *test1 =
+"2cu3nfTLaEpx1Ztbbvhy4Jg5Kj-D-bwXafbK8Ma73QGBTJap7u0Uvco_YO0X-H_d_tSbJh_N";
+const char *test2 =
+"HJBx6NGDJyymUm1HdcGZVPOK03sKgZIB8i3TT0uL9hOYFlCs1aQC8NU1kuUD";
+const char *test3 =
+"hJ6KP7RMwWhqQr0Dj7_rEqpXIpidrvj";
+const char *test4 =
+"Vldqd3FEVVpZLVNTTjBYODZxR2Y2c1dnZnFZNUJ6N0gzYkt6eDR1b0tsVUVPUkZXelEwRWlfTFFz\n"
+"ZGFmTS1ReHh4RDNWRWl2R2x2TE1sNDkzTHBtbzBiVFdpYS1rOFNGbUlHM210ZUhReFZDNEJnMjFw\n"
+"QWFfbjlTU0hNRUlaTC0yd0t4MDNlX1JKTGV6WlpnZ3RqOVV5dURuRFJWTEFGaXFfTW9WbFNtMGtn\n"
+"X29KYkdwWXhySmRkdTFCM21FQUVFYlYwYmhtWFFFd2tuUDdCVmV6YzNXSmZvT2JHOEZBM3RCeEZO\n"
+"SDRoRWNfRmxVWWVqYWp5RU9MTXhXVHNXektEQk1VWHlubzZndHpfUmRvbXJmOWJQb2p2Zm9PTmFR\n"
+"blp0MmFHS1liS1htNE45ZUhpZGxYYWp2ZG1KQjdXamFFOHJHdjdpc2lXdDZlM3owM2ZwSVdHRHNN\n"
+"Y1ZEUXVfRXJnRjNkV3dSZHNjNVJFX2NzRXpYRktQVUZLbk50cjJpb2c1TWtMck00Y002d0FPcTly\n"
+"dFBPdE5pcEEzaGxrNVdxdWJkR2Fwd2FXQnc2SnJIRUx3SUN0X2NwRGZCOGFVZVhPTkhfaUdiUy1k\n"
+"MEZhclUwRHdwZEoyZzRGS2EzVTBQVmhpZ3ZrbjFucTllWFE1VnJXejBVNkwySHpqbEVzZ0FSYzlC\n"
+"d0FyV3cya3dERmgyNlBkMDBJa2NwenN4dS1FWThSOVZhTEU0QnhMcXI0Qk11M25JTlkwS1QwRC05\n"
+"OVQ0aHZFYXNBNjZFbUpOU2hDYnFKZzV2WnN5Q0ZuVmJuM2wwVlY0V0llbi1UX0hrWWFWX21IWGh1\n"
+"NWxEdmJianJvdjZZai01enhMbnVVSXFZMXZaZkpwa21SbS1hUzhpeWJTbmRXaTlLWVpKbjhlajBz\n"
+"RXl6dkZnSVQ3blczc3N3cW5NRmlVVm1raUcxdXZTY2NtbkVnQjVxamxXQVVQT3AxWTNPZ3c3Qklt\n"
+"c1JydFlWZVYyWVNjNTNiM1ZtZ1ZncXV1UVNmZ0dZSzl2eUI1VUNXclY3TTN3MHUzVVVITm55ckpC\n"
+"MzdRM3FlcWZwSTNLUEcxQkkxYUNkZGZ4QWY1QUtzbXZPQ1pUdnB2WVBXRkVERjBTNzJqaDhWaWxw\n"
+"OS1BUURqTlI2WWdWTDdXYUN2N2h1U243Um4zWVlRTkF5cmhHaHdDOVpSLXBjM3lQbW5mMVJzTndV\n"
+"NHR3cFJWVjhmcDc2eHgtZHBSTU1Wc2lIWmJiX3l4VTZqeTBxTVdZLTBxYkFjelYyZlhhTmpYaWlW\n"
+"TGpzUDRaX3ZlQWFFV2NlbUhLMkE2Q1V3Z21HU1VVMnE4aWdJWnE5Y2czamxDaWo0ZkZDT29hdDFs\n"
+"ZmRXYWJhLUluVldwdFZMRElNODd3c25zNGdvLXVoZkJKLVpSVXlMdDY0T2VQZ0dINkNELTRnRkFW\n"
+"QndtSHRLV2RvRXBPbUtEU0RZZFJTUnJFQ3RuX204MGw0alZOX1JOV1dKajRMZGluLVpwNER6cnRQ\n"
+"eU1ySzNXSTZwWW1xYzBzdldabXJEcExQaTZ0NVZvSmJ5Vm1JVDhjU2dacjJfaFdCQ092dnJlOUc5\n"
+"RDNCMmRzR0puSG51eFZwa1pwdlhDZ3JTeVhDUE4xSms0Ym9IWjhQMVk2TXRadE1vRUk3SmRqQWEt\n"
+"QU9SNUtRZmdKdjZ2WldkOE9GR2V2blJVUV9vMWlLRnFhQ1lfZ2U1Wi12dDVHSG5vQjZSR3pyTjRi\n"
+"QnhCV3dLRldXSkpSQ1RnRzRIR3RpTmVhamNFVTBGS3VTVUVNS0t3bHdIX2tTZ0VuaDJvZzc1ZlNZ\n"
+"dGJuUzFMN19NbHg4Y1BzRnFhSkt2XzVPUEZUT0pnb19tZjhrZV94cHg4ODhjbll5MFowek5ub1RB\n"
+"dlg5aklWZEp5UFFxeU1XSDdzOHprOGE3UWstMkdUMEVVdkNxamlCQ3RCdFRxMzEzSkx6ckNoZS1L\n"
+"ME5nMmtYcVJVcUlQRk1DMnJqS09PRk05ZzU2NnF3VC1FOG90eE1TM0pzcVVIMm5KODN0NndZZDUz\n"
+"eDZveXNIUTgzMWc2Rm41ZDFaMFZDQUQ1OHl3Rk0tMWItOER1alg1ejdja0pLMkZSRzU4UVVnbmVh\n";
+const char *test5_1 =
+"K4j96cygic8APxPCzD8Lfm880rQWAobk_Jo71OHZzQyTxIEwUfP3YszHOGdA";
+const char *test5_2 =
+"Abm3LWKCe51nnSKXhF5Ko3m";
+const char *test6 =
+"tcb-b6UosnXUYSZFu8wg_Y-_FMZXtRT-";
+const char *test7 =
+"1zonGXjPOF8EaGGIb2mwMiunOOv__F";
+const char *test8 =
+"SejwMAevNju06MZEyu_pCuI6713pW7Zfnx3BCeXF153";
+const char *test9 =
+"";
+const char *test10 =
+"H1";
+const char *test11 =
+"H2";
+const char *test12 =
+"H3";
+const char *test13 =
+"LINK";
+const char *test14_1 =
+"ANOTHERONE";
+const char *test14_2 =
+"WITH LABEL THIS TIME!";
+const char *test15 =
+" ____  ____  _____ \n"
+"|  _ \\|  _ \\| ____|\n"
+"| |_) | |_) |  _|  \n"
+"|  __/|  _ <| |___ \n"
+"|_|   |_| \\_\\_____|\n"
+"                   \n";
+const char *test16 =
+"item1";
+const char *test17 =
+"item2";
+const char *test18 =
+"item3";
+const char *test19 =
+"she said";
+const char *test20 =
+"he said";
+const char *test21 =
+"no one said";
+
+
+static void
+FAIL(char *msg)
+{
+	printf("FAIL: %s\n", msg);
+	exit(1);
+}
+
+static void
+PASS(char *msg)
+{
+	printf("PASS: %s\n", msg);
+}
+
+static void
+test_decode1(void)
+{
+	struct gemtext_h3 *t;
+
+	t = gemtext_decode_file("test1.gmi");
+	if (t == NULL)
+		FAIL("TestDecode1");
+
+	if (t->type != GEMTEXT_H3)
+		FAIL("TestDecode1");
+	if (strcmp(t->text, test1) != 0)
+		FAIL("TestDecode1");
+
+	gemtext_free(t);
+	PASS("TestDecode1");
+}
+
+static void
+test_decode2(void)
+{
+	struct gemtext_h1 *t;
+
+	t = gemtext_decode_file("test2.gmi");
+	if (t == NULL)
+		FAIL("TestDecode2");
+
+	if (t->type != GEMTEXT_H1)
+		FAIL("TestDecode2");
+	if (strcmp(t->text, test2) != 0)
+		FAIL("TestDecode2");
+
+	gemtext_free(t);
+	PASS("TestDecode2");
+}
+
+static void
+test_decode3(void)
+{
+	struct gemtext_h2 *t;
+
+	t = gemtext_decode_file("test3.gmi");
+	if (t == NULL)
+		FAIL("TestDecode3");
+
+	if (t->type != GEMTEXT_H2)
+		FAIL("TestDecode3");
+	if (strcmp(t->text, test3) != 0)
+		FAIL("TestDecode3");
+
+	gemtext_free(t);
+	PASS("TestDecode3");
+}
+
+static void
+test_decode4(void)
+{
+	struct gemtext_pre *t;
+
+	t = gemtext_decode_file("test4.gmi");
+	if (t == NULL)
+		FAIL("TestDecode4");
+
+	if (t->type != GEMTEXT_PRE)
+		FAIL("TestDecode4");
+	if (strcmp(t->text, test4) != 0)
+		FAIL("TestDecode4");
+
+	gemtext_free(t);
+	PASS("TestDecode4");
+}
+
+static void
+test_decode5(void)
+{
+	struct gemtext_link *t;
+
+	t = gemtext_decode_file("test5.gmi");
+	if (t == NULL)
+		FAIL("TestDecode5");
+
+	if (t->type != GEMTEXT_LINK)
+		FAIL("TestDecode5");
+	if (strcmp(t->link, test5_1) != 0)
+		FAIL("TestDecode5");
+	if (strcmp(t->name, test5_2) != 0)
+		FAIL("TestDecode5");
+
+	gemtext_free(t);
+	PASS("TestDecode5");
+}
+
+static void
+test_decode6(void)
+{
+	struct gemtext_qt *t;
+
+	t = gemtext_decode_file("test6.gmi");
+	if (t == NULL)
+		FAIL("TestDecode6");
+
+	if (t->type != GEMTEXT_QT)
+		FAIL("TestDecode6");
+	if (strcmp(t->text, test6) != 0)
+		FAIL("TestDecode6");
+
+	gemtext_free(t);
+	PASS("TestDecode6");
+}
+
+static void
+test_decode7(void)
+{
+	struct gemtext_ul *t;
+
+	t = gemtext_decode_file("test7.gmi");
+	if (t == NULL)
+		FAIL("TestDecode7");
+
+	if (t->type != GEMTEXT_UL)
+		FAIL("TestDecode7");
+	if (strcmp(t->text, test7) != 0)
+		FAIL("TestDecode7");
+
+	gemtext_free(t);
+	PASS("TestDecode7");
+}
+
+static void
+test_decode8(void)
+{
+	struct gemtext_ul *t;
+
+	t = gemtext_decode_file("test8.gmi");
+	if (t == NULL)
+		FAIL("TestDecode8");
+
+	if (t->type != GEMTEXT_UL)
+		FAIL("TestDecode8");
+	if (strcmp(t->text, test8) != 0)
+		FAIL("TestDecode8");
+
+	gemtext_free(t);
+	PASS("TestDecode8");
+}
+
+static void
+test_decode9(void)
+{
+	struct gemtext_text *t;
+
+	t = gemtext_decode_file("test9.gmi");
+	if (t == NULL)
+		FAIL("TestDecode9");
+
+	if (t->type != GEMTEXT_TEXT)
+		FAIL("TestDecode9");
+	if (strcmp(t->text, test9) != 0)
+		FAIL("TestDecode9");
+
+	gemtext_free(t);
+	PASS("TestDecode9");
+}
+
+static void
+test_decode10(void)
+{
+	struct gemtext_h1 *t;
+
+	t = gemtext_decode_file("test10.gmi");
+	if (t == NULL)
+		FAIL("TestDecode10");
+
+	if (t->type != GEMTEXT_H1)
+		FAIL("TestDecode10");
+	if (strcmp(t->text, test10) != 0)
+		FAIL("TestDecode10");
+
+	gemtext_free(t);
+	PASS("TestDecode10");
+}
+
+static void
+test_decode11(void)
+{
+	struct gemtext_h2 *t;
+
+	t = gemtext_decode_file("test11.gmi");
+	if (t == NULL)
+		FAIL("TestDecode11");
+
+	if (t->type != GEMTEXT_H2)
+		FAIL("TestDecode11");
+	if (strcmp(t->text, test11) != 0)
+		FAIL("TestDecode11");
+
+	gemtext_free(t);
+	PASS("TestDecode11");
+}
+
+static void
+test_decode12(void)
+{
+	struct gemtext_h3 *t;
+
+	t = gemtext_decode_file("test12.gmi");
+	if (t == NULL)
+		FAIL("TestDecode12");
+
+	if (t->type != GEMTEXT_H3)
+		FAIL("TestDecode12");
+	if (strcmp(t->text, test12) != 0)
+		FAIL("TestDecode12");
+
+	gemtext_free(t);
+	PASS("TestDecode12");
+}
+
+static void
+test_decode13(void)
+{
+	struct gemtext_link *t;
+
+	t = gemtext_decode_file("test13.gmi");
+	if (t == NULL)
+		FAIL("TestDecode13");
+
+	if (t->type != GEMTEXT_LINK)
+		FAIL("TestDecode13");
+	if (strcmp(t->link, test13) != 0)
+		FAIL("TestDecode13");
+	if (t->name != NULL)
+		FAIL("TestDecode13");
+
+	gemtext_free(t);
+	PASS("TestDecode13");
+}
+
+static void
+test_decode14(void)
+{
+	struct gemtext_link *t;
+
+	t = gemtext_decode_file("test14.gmi");
+	if (t == NULL)
+		FAIL("TestDecode14");
+
+	if (t->type != GEMTEXT_LINK)
+		FAIL("TestDecode14");
+	if (strcmp(t->link, test14_1) != 0)
+		FAIL("TestDecode14");
+	if (strcmp(t->name, test14_2) != 0)
+		FAIL("TestDecode14");
+
+	gemtext_free(t);
+	PASS("TestDecode14");
+}
+
+static void
+test_decode15(void)
+{
+	struct gemtext_pre *t;
+
+	t = gemtext_decode_file("test15.gmi");
+	if (t == NULL)
+		FAIL("TestDecode15");
+
+	if (t->type != GEMTEXT_PRE)
+		FAIL("TestDecode15");
+	if (strcmp(t->text, test15) != 0)
+		FAIL("TestDecode15");
+
+	gemtext_free(t);
+	PASS("TestDecode15");
+}
+
+static void
+test_decode16(void)
+{
+	struct gemtext_ul *t;
+
+	t = gemtext_decode_file("test16.gmi");
+	if (t == NULL)
+		FAIL("TestDecode16");
+
+	if (t->type != GEMTEXT_UL)
+		FAIL("TestDecode16");
+	if (strcmp(t->text, test16) != 0)
+		FAIL("TestDecode16");
+
+	gemtext_free(t);
+	PASS("TestDecode16");
+}
+
+static void
+test_decode17(void)
+{
+	struct gemtext_ul *t;
+
+	t = gemtext_decode_file("test17.gmi");
+	if (t == NULL)
+		FAIL("TestDecode17");
+
+	if (t->type != GEMTEXT_UL)
+		FAIL("TestDecode17");
+	if (strcmp(t->text, test17) != 0)
+		FAIL("TestDecode17");
+
+	gemtext_free(t);
+	PASS("TestDecode17");
+}
+
+static void
+test_decode18(void)
+{
+	struct gemtext_ul *t;
+
+	t = gemtext_decode_file("test18.gmi");
+	if (t == NULL)
+		FAIL("TestDecode18");
+
+	if (t->type != GEMTEXT_UL)
+		FAIL("TestDecode18");
+	if (strcmp(t->text, test18) != 0)
+		FAIL("TestDecode18");
+
+	gemtext_free(t);
+	PASS("TestDecode18");
+}
+
+static void
+test_decode19(void)
+{
+	struct gemtext_qt *t;
+
+	t = gemtext_decode_file("test19.gmi");
+	if (t == NULL)
+		FAIL("TestDecode19");
+
+	if (t->type != GEMTEXT_QT)
+		FAIL("TestDecode19");
+	if (strcmp(t->text, test19) != 0)
+		FAIL("TestDecode19");
+
+	gemtext_free(t);
+	PASS("TestDecode19");
+}
+
+static void
+test_decode20(void)
+{
+	struct gemtext_qt *t;
+
+	t = gemtext_decode_file("test20.gmi");
+	if (t == NULL)
+		FAIL("TestDecode20");
+
+	if (t->type != GEMTEXT_QT)
+		FAIL("TestDecode20");
+	if (strcmp(t->text, test20) != 0)
+		FAIL("TestDecode20");
+
+	gemtext_free(t);
+	PASS("TestDecode20");
+}
+
+static void
+test_decode21(void)
+{
+	struct gemtext_qt *t;
+
+	t = gemtext_decode_file("test21.gmi");
+	if (t == NULL)
+		FAIL("TestDecode21");
+
+	if (t->type != GEMTEXT_QT)
+		FAIL("TestDecode21");
+	if (strcmp(t->text, test21) != 0)
+		FAIL("TestDecode21");
+
+	gemtext_free(t);
+	PASS("TestDecode21");
+}
+
+
+int
+main(void)
+{
+	test_decode1();
+	test_decode2();
+	test_decode3();
+	test_decode4();
+	test_decode5();
+	test_decode6();
+	test_decode7();
+	test_decode8();
+	test_decode9();
+	test_decode10();
+	test_decode11();
+	test_decode12();
+	test_decode13();
+	test_decode14();
+	test_decode15();
+	test_decode16();
+	test_decode17();
+	test_decode18();
+	test_decode19();
+	test_decode20();
+	test_decode21();
+
+	return 0;
+}
diff --git a/tests/test.gmi b/tests/test.gmi
new file mode 100644
index 0000000..9efec48
--- /dev/null
+++ b/tests/test.gmi
@@ -0,0 +1,57 @@
+### 2cu3nfTLaEpx1Ztbbvhy4Jg5Kj-D-bwXafbK8Ma73QGBTJap7u0Uvco_YO0X-H_d_tSbJh_N
+# HJBx6NGDJyymUm1HdcGZVPOK03sKgZIB8i3TT0uL9hOYFlCs1aQC8NU1kuUD
+## hJ6KP7RMwWhqQr0Dj7_rEqpXIpidrvj
+```
+Vldqd3FEVVpZLVNTTjBYODZxR2Y2c1dnZnFZNUJ6N0gzYkt6eDR1b0tsVUVPUkZXelEwRWlfTFFz
+ZGFmTS1ReHh4RDNWRWl2R2x2TE1sNDkzTHBtbzBiVFdpYS1rOFNGbUlHM210ZUhReFZDNEJnMjFw
+QWFfbjlTU0hNRUlaTC0yd0t4MDNlX1JKTGV6WlpnZ3RqOVV5dURuRFJWTEFGaXFfTW9WbFNtMGtn
+X29KYkdwWXhySmRkdTFCM21FQUVFYlYwYmhtWFFFd2tuUDdCVmV6YzNXSmZvT2JHOEZBM3RCeEZO
+SDRoRWNfRmxVWWVqYWp5RU9MTXhXVHNXektEQk1VWHlubzZndHpfUmRvbXJmOWJQb2p2Zm9PTmFR
+blp0MmFHS1liS1htNE45ZUhpZGxYYWp2ZG1KQjdXamFFOHJHdjdpc2lXdDZlM3owM2ZwSVdHRHNN
+Y1ZEUXVfRXJnRjNkV3dSZHNjNVJFX2NzRXpYRktQVUZLbk50cjJpb2c1TWtMck00Y002d0FPcTly
+dFBPdE5pcEEzaGxrNVdxdWJkR2Fwd2FXQnc2SnJIRUx3SUN0X2NwRGZCOGFVZVhPTkhfaUdiUy1k
+MEZhclUwRHdwZEoyZzRGS2EzVTBQVmhpZ3ZrbjFucTllWFE1VnJXejBVNkwySHpqbEVzZ0FSYzlC
+d0FyV3cya3dERmgyNlBkMDBJa2NwenN4dS1FWThSOVZhTEU0QnhMcXI0Qk11M25JTlkwS1QwRC05
+OVQ0aHZFYXNBNjZFbUpOU2hDYnFKZzV2WnN5Q0ZuVmJuM2wwVlY0V0llbi1UX0hrWWFWX21IWGh1
+NWxEdmJianJvdjZZai01enhMbnVVSXFZMXZaZkpwa21SbS1hUzhpeWJTbmRXaTlLWVpKbjhlajBz
+RXl6dkZnSVQ3blczc3N3cW5NRmlVVm1raUcxdXZTY2NtbkVnQjVxamxXQVVQT3AxWTNPZ3c3Qklt
+c1JydFlWZVYyWVNjNTNiM1ZtZ1ZncXV1UVNmZ0dZSzl2eUI1VUNXclY3TTN3MHUzVVVITm55ckpC
+MzdRM3FlcWZwSTNLUEcxQkkxYUNkZGZ4QWY1QUtzbXZPQ1pUdnB2WVBXRkVERjBTNzJqaDhWaWxw
+OS1BUURqTlI2WWdWTDdXYUN2N2h1U243Um4zWVlRTkF5cmhHaHdDOVpSLXBjM3lQbW5mMVJzTndV
+NHR3cFJWVjhmcDc2eHgtZHBSTU1Wc2lIWmJiX3l4VTZqeTBxTVdZLTBxYkFjelYyZlhhTmpYaWlW
+TGpzUDRaX3ZlQWFFV2NlbUhLMkE2Q1V3Z21HU1VVMnE4aWdJWnE5Y2czamxDaWo0ZkZDT29hdDFs
+ZmRXYWJhLUluVldwdFZMRElNODd3c25zNGdvLXVoZkJKLVpSVXlMdDY0T2VQZ0dINkNELTRnRkFW
+QndtSHRLV2RvRXBPbUtEU0RZZFJTUnJFQ3RuX204MGw0alZOX1JOV1dKajRMZGluLVpwNER6cnRQ
+eU1ySzNXSTZwWW1xYzBzdldabXJEcExQaTZ0NVZvSmJ5Vm1JVDhjU2dacjJfaFdCQ092dnJlOUc5
+RDNCMmRzR0puSG51eFZwa1pwdlhDZ3JTeVhDUE4xSms0Ym9IWjhQMVk2TXRadE1vRUk3SmRqQWEt
+QU9SNUtRZmdKdjZ2WldkOE9GR2V2blJVUV9vMWlLRnFhQ1lfZ2U1Wi12dDVHSG5vQjZSR3pyTjRi
+QnhCV3dLRldXSkpSQ1RnRzRIR3RpTmVhamNFVTBGS3VTVUVNS0t3bHdIX2tTZ0VuaDJvZzc1ZlNZ
+dGJuUzFMN19NbHg4Y1BzRnFhSkt2XzVPUEZUT0pnb19tZjhrZV94cHg4ODhjbll5MFowek5ub1RB
+dlg5aklWZEp5UFFxeU1XSDdzOHprOGE3UWstMkdUMEVVdkNxamlCQ3RCdFRxMzEzSkx6ckNoZS1L
+ME5nMmtYcVJVcUlQRk1DMnJqS09PRk05ZzU2NnF3VC1FOG90eE1TM0pzcVVIMm5KODN0NndZZDUz
+eDZveXNIUTgzMWc2Rm41ZDFaMFZDQUQ1OHl3Rk0tMWItOER1alg1ejdja0pLMkZSRzU4UVVnbmVh
+```
+=> K4j96cygic8APxPCzD8Lfm880rQWAobk_Jo71OHZzQyTxIEwUfP3YszHOGdA Abm3LWKCe51nnSKXhF5Ko3m
+> tcb-b6UosnXUYSZFu8wg_Y-_FMZXtRT-
+* 1zonGXjPOF8EaGGIb2mwMiunOOv__F
+* SejwMAevNju06MZEyu_pCuI6713pW7Zfnx3BCeXF153
+
+# H1
+## H2
+### H3
+=> LINK
+=> ANOTHERONE WITH LABEL THIS TIME!
+```
+ ____  ____  _____ 
+|  _ \|  _ \| ____|
+| |_) | |_) |  _|  
+|  __/|  _ <| |___ 
+|_|   |_| \_\_____|
+                   
+```
+* item1
+* item2
+* item3
+> she said
+> he said
+> no one said
diff --git a/tests/test1.gmi b/tests/test1.gmi
new file mode 100644
index 0000000..e84f4f2
--- /dev/null
+++ b/tests/test1.gmi
@@ -0,0 +1 @@
+### 2cu3nfTLaEpx1Ztbbvhy4Jg5Kj-D-bwXafbK8Ma73QGBTJap7u0Uvco_YO0X-H_d_tSbJh_N
diff --git a/tests/test10.gmi b/tests/test10.gmi
new file mode 100644
index 0000000..baf209b
--- /dev/null
+++ b/tests/test10.gmi
@@ -0,0 +1 @@
+# H1
diff --git a/tests/test11.gmi b/tests/test11.gmi
new file mode 100644
index 0000000..630807c
--- /dev/null
+++ b/tests/test11.gmi
@@ -0,0 +1 @@
+## H2
diff --git a/tests/test12.gmi b/tests/test12.gmi
new file mode 100644
index 0000000..0365998
--- /dev/null
+++ b/tests/test12.gmi
@@ -0,0 +1 @@
+### H3
diff --git a/tests/test13.gmi b/tests/test13.gmi
new file mode 100644
index 0000000..093a70e
--- /dev/null
+++ b/tests/test13.gmi
@@ -0,0 +1 @@
+=> LINK
diff --git a/tests/test14.gmi b/tests/test14.gmi
new file mode 100644
index 0000000..e38981c
--- /dev/null
+++ b/tests/test14.gmi
@@ -0,0 +1 @@
+=> ANOTHERONE WITH LABEL THIS TIME!
diff --git a/tests/test15.gmi b/tests/test15.gmi
new file mode 100644
index 0000000..3f40c5a
--- /dev/null
+++ b/tests/test15.gmi
@@ -0,0 +1,8 @@
+```
+ ____  ____  _____ 
+|  _ \|  _ \| ____|
+| |_) | |_) |  _|  
+|  __/|  _ <| |___ 
+|_|   |_| \_\_____|
+                   
+```
diff --git a/tests/test16.gmi b/tests/test16.gmi
new file mode 100644
index 0000000..83da8b4
--- /dev/null
+++ b/tests/test16.gmi
@@ -0,0 +1 @@
+* item1
diff --git a/tests/test17.gmi b/tests/test17.gmi
new file mode 100644
index 0000000..90572c1
--- /dev/null
+++ b/tests/test17.gmi
@@ -0,0 +1 @@
+* item2
diff --git a/tests/test18.gmi b/tests/test18.gmi
new file mode 100644
index 0000000..6faf363
--- /dev/null
+++ b/tests/test18.gmi
@@ -0,0 +1 @@
+* item3
diff --git a/tests/test19.gmi b/tests/test19.gmi
new file mode 100644
index 0000000..b8340f3
--- /dev/null
+++ b/tests/test19.gmi
@@ -0,0 +1 @@
+> she said
diff --git a/tests/test2.gmi b/tests/test2.gmi
new file mode 100644
index 0000000..97de87c
--- /dev/null
+++ b/tests/test2.gmi
@@ -0,0 +1 @@
+# HJBx6NGDJyymUm1HdcGZVPOK03sKgZIB8i3TT0uL9hOYFlCs1aQC8NU1kuUD
diff --git a/tests/test20.gmi b/tests/test20.gmi
new file mode 100644
index 0000000..5649e2f
--- /dev/null
+++ b/tests/test20.gmi
@@ -0,0 +1 @@
+> he said
diff --git a/tests/test21.gmi b/tests/test21.gmi
new file mode 100644
index 0000000..a685532
--- /dev/null
+++ b/tests/test21.gmi
@@ -0,0 +1 @@
+> no one said
diff --git a/tests/test3.gmi b/tests/test3.gmi
new file mode 100644
index 0000000..b866daa
--- /dev/null
+++ b/tests/test3.gmi
@@ -0,0 +1 @@
+## hJ6KP7RMwWhqQr0Dj7_rEqpXIpidrvj
diff --git a/tests/test4.gmi b/tests/test4.gmi
new file mode 100644
index 0000000..efcde5f
--- /dev/null
+++ b/tests/test4.gmi
@@ -0,0 +1,30 @@
+```
+Vldqd3FEVVpZLVNTTjBYODZxR2Y2c1dnZnFZNUJ6N0gzYkt6eDR1b0tsVUVPUkZXelEwRWlfTFFz
+ZGFmTS1ReHh4RDNWRWl2R2x2TE1sNDkzTHBtbzBiVFdpYS1rOFNGbUlHM210ZUhReFZDNEJnMjFw
+QWFfbjlTU0hNRUlaTC0yd0t4MDNlX1JKTGV6WlpnZ3RqOVV5dURuRFJWTEFGaXFfTW9WbFNtMGtn
+X29KYkdwWXhySmRkdTFCM21FQUVFYlYwYmhtWFFFd2tuUDdCVmV6YzNXSmZvT2JHOEZBM3RCeEZO
+SDRoRWNfRmxVWWVqYWp5RU9MTXhXVHNXektEQk1VWHlubzZndHpfUmRvbXJmOWJQb2p2Zm9PTmFR
+blp0MmFHS1liS1htNE45ZUhpZGxYYWp2ZG1KQjdXamFFOHJHdjdpc2lXdDZlM3owM2ZwSVdHRHNN
+Y1ZEUXVfRXJnRjNkV3dSZHNjNVJFX2NzRXpYRktQVUZLbk50cjJpb2c1TWtMck00Y002d0FPcTly
+dFBPdE5pcEEzaGxrNVdxdWJkR2Fwd2FXQnc2SnJIRUx3SUN0X2NwRGZCOGFVZVhPTkhfaUdiUy1k
+MEZhclUwRHdwZEoyZzRGS2EzVTBQVmhpZ3ZrbjFucTllWFE1VnJXejBVNkwySHpqbEVzZ0FSYzlC
+d0FyV3cya3dERmgyNlBkMDBJa2NwenN4dS1FWThSOVZhTEU0QnhMcXI0Qk11M25JTlkwS1QwRC05
+OVQ0aHZFYXNBNjZFbUpOU2hDYnFKZzV2WnN5Q0ZuVmJuM2wwVlY0V0llbi1UX0hrWWFWX21IWGh1
+NWxEdmJianJvdjZZai01enhMbnVVSXFZMXZaZkpwa21SbS1hUzhpeWJTbmRXaTlLWVpKbjhlajBz
+RXl6dkZnSVQ3blczc3N3cW5NRmlVVm1raUcxdXZTY2NtbkVnQjVxamxXQVVQT3AxWTNPZ3c3Qklt
+c1JydFlWZVYyWVNjNTNiM1ZtZ1ZncXV1UVNmZ0dZSzl2eUI1VUNXclY3TTN3MHUzVVVITm55ckpC
+MzdRM3FlcWZwSTNLUEcxQkkxYUNkZGZ4QWY1QUtzbXZPQ1pUdnB2WVBXRkVERjBTNzJqaDhWaWxw
+OS1BUURqTlI2WWdWTDdXYUN2N2h1U243Um4zWVlRTkF5cmhHaHdDOVpSLXBjM3lQbW5mMVJzTndV
+NHR3cFJWVjhmcDc2eHgtZHBSTU1Wc2lIWmJiX3l4VTZqeTBxTVdZLTBxYkFjelYyZlhhTmpYaWlW
+TGpzUDRaX3ZlQWFFV2NlbUhLMkE2Q1V3Z21HU1VVMnE4aWdJWnE5Y2czamxDaWo0ZkZDT29hdDFs
+ZmRXYWJhLUluVldwdFZMRElNODd3c25zNGdvLXVoZkJKLVpSVXlMdDY0T2VQZ0dINkNELTRnRkFW
+QndtSHRLV2RvRXBPbUtEU0RZZFJTUnJFQ3RuX204MGw0alZOX1JOV1dKajRMZGluLVpwNER6cnRQ
+eU1ySzNXSTZwWW1xYzBzdldabXJEcExQaTZ0NVZvSmJ5Vm1JVDhjU2dacjJfaFdCQ092dnJlOUc5
+RDNCMmRzR0puSG51eFZwa1pwdlhDZ3JTeVhDUE4xSms0Ym9IWjhQMVk2TXRadE1vRUk3SmRqQWEt
+QU9SNUtRZmdKdjZ2WldkOE9GR2V2blJVUV9vMWlLRnFhQ1lfZ2U1Wi12dDVHSG5vQjZSR3pyTjRi
+QnhCV3dLRldXSkpSQ1RnRzRIR3RpTmVhamNFVTBGS3VTVUVNS0t3bHdIX2tTZ0VuaDJvZzc1ZlNZ
+dGJuUzFMN19NbHg4Y1BzRnFhSkt2XzVPUEZUT0pnb19tZjhrZV94cHg4ODhjbll5MFowek5ub1RB
+dlg5aklWZEp5UFFxeU1XSDdzOHprOGE3UWstMkdUMEVVdkNxamlCQ3RCdFRxMzEzSkx6ckNoZS1L
+ME5nMmtYcVJVcUlQRk1DMnJqS09PRk05ZzU2NnF3VC1FOG90eE1TM0pzcVVIMm5KODN0NndZZDUz
+eDZveXNIUTgzMWc2Rm41ZDFaMFZDQUQ1OHl3Rk0tMWItOER1alg1ejdja0pLMkZSRzU4UVVnbmVh
+```
diff --git a/tests/test5.gmi b/tests/test5.gmi
new file mode 100644
index 0000000..debb58d
--- /dev/null
+++ b/tests/test5.gmi
@@ -0,0 +1 @@
+=> K4j96cygic8APxPCzD8Lfm880rQWAobk_Jo71OHZzQyTxIEwUfP3YszHOGdA Abm3LWKCe51nnSKXhF5Ko3m
diff --git a/tests/test6.gmi b/tests/test6.gmi
new file mode 100644
index 0000000..d13d719
--- /dev/null
+++ b/tests/test6.gmi
@@ -0,0 +1 @@
+> tcb-b6UosnXUYSZFu8wg_Y-_FMZXtRT-
diff --git a/tests/test7.gmi b/tests/test7.gmi
new file mode 100644
index 0000000..9aa3655
--- /dev/null
+++ b/tests/test7.gmi
@@ -0,0 +1 @@
+* 1zonGXjPOF8EaGGIb2mwMiunOOv__F
diff --git a/tests/test8.gmi b/tests/test8.gmi
new file mode 100644
index 0000000..5d881ce
--- /dev/null
+++ b/tests/test8.gmi
@@ -0,0 +1 @@
+* SejwMAevNju06MZEyu_pCuI6713pW7Zfnx3BCeXF153
diff --git a/tests/test9.gmi b/tests/test9.gmi
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/tests/test9.gmi