/* * Copyright (c) Cody Logan * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ #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); } }