#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", "

header

\n"); //errors += test_parse_file("2. Bold", "*bold*", "bold\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); } }