#include "../src/util.c" #include #include "../src/testing.h" #include "slurp.h" static int test_slurp(void) { int rc = -1; test_start("slurp()"); char *expected = NULL; char *given = NULL; size_t givenlen = 0U; FILE *file = fopen("/dev/null", "w"); if (file == NULL) { logerr("fopen(\"/dev/null\", \"w\")"); goto out; } logerr_set_stream(file); { testing("non-existent file"); const char filename[] = __FILE__ ".non-existant"; const int ret_expected = slurp_for_tests(filename, &expected); const int ret_given = slurp(filename, &givenlen, &given); assert(expected == NULL); assert(given == NULL); assert(givenlen == 0U); assert(!!ret_given == !!ret_expected); test_ok(); } { testing("slurp() == slurp_for_tests()"); if (slurp(__FILE__, &givenlen, &given)) { logerr("slurp()"); goto out; } if (slurp_for_tests(__FILE__, &expected)) { logerr("slurp_for_tests()"); goto out; } assert(expected != NULL); assert(given != NULL); assert(givenlen == strlen(given)); assert(strcmp(given, expected) == 0); free(expected); free(given); expected = NULL; given = NULL; test_ok(); } rc = 0; out: logerr_set_stream(NULL); if (expected != NULL) { free(expected); expected = NULL; } if (given != NULL) { free(given); given = NULL; } if (file != NULL) { if (fclose(file)) { logerr("fclose(file)"); rc = -1; } } return rc; } int main(void) { int rc = EXIT_FAILURE; if (test_slurp()) { logerr("test_slurp()"); goto out; } rc = EXIT_SUCCESS; out: return rc; }