aboutsummaryrefslogtreecommitdiff
path: root/test-convert-markdown.c
diff options
context:
space:
mode:
Diffstat (limited to 'test-convert-markdown.c')
-rw-r--r--test-convert-markdown.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/test-convert-markdown.c b/test-convert-markdown.c
new file mode 100644
index 0000000..5925184
--- /dev/null
+++ b/test-convert-markdown.c
@@ -0,0 +1,51 @@
+#include "parse-file.h"
+
+static int test_parse_file(const char* testname, const char* input, const char* output) {
+ FILE* instream = tmpfile();
+ FILE* outstream = tmpfile();
+
+ /* for some reason, input isn't properly written to instream */
+ fprintf(instream, "%s\n", input);
+
+ const int length = strlen(output) + 1;
+ char buffer[length];
+
+ /* TODO: use instream instead of stdin */
+ _parse_file(stdin, outstream);
+ const int tmp_length = ftell(outstream) + 1;
+ rewind(outstream);
+
+ fgets(buffer, length, outstream);
+ fclose(instream);
+ fclose(outstream);
+
+ if (strcmp(buffer, output) == 0 && tmp_length == length) {
+ printf("%s test succeeded\n", testname);
+ return 0;
+ } else {
+ printf("%s test failed\n", testname);
+ printf("%s !=\n%s\n", buffer, output);
+ return 1;
+ }
+}
+
+int main(void) {
+ printf("=============\nRunning Tests\n=============\n");
+
+ int errors = 0;
+ errors += test_parse_file("1. Header", "# header", "<h1 id=\"header\">header</h1>\n");
+ //errors += test_parse_file("2. Bold", "*bold*", "<strong>bold</strong>\n");
+
+ printf("\n============\nTest Summary\n============\n");
+
+ switch (errors) {
+ case 0:
+ printf("All tests succeeded\n");
+ break;
+ case 1:
+ printf("One test failed\n");
+ break;
+ default:
+ printf("%i tests failed\n", errors);
+ }
+}