void TestCuSuiteDetails_SingleFail(CuTest* tc) { CuSuite ts; CuTest tc1, tc2; CuString details; const char* front; const char* back; CuSuiteInit(&ts); CuTestInit(&tc1, "TestPasses", TestPasses); CuTestInit(&tc2, "TestFails", zTestFails); CuStringInit(&details); CuSuiteAdd(&ts, &tc1); CuSuiteAdd(&ts, &tc2); CuSuiteRun(&ts); CuSuiteDetails(&ts, &details); CuAssertTrue(tc, ts.count == 2); CuAssertTrue(tc, ts.failCount == 1); front = "There was 1 failure:\n" "1) TestFails: "; back = "test should fail\n" "\n!!!FAILURES!!!\n" "Runs: 2 Passes: 1 Fails: 1\n"; CuAssertStrEquals(tc, back, details.buffer + strlen(details.buffer) - strlen(back)); details.buffer[strlen(front)] = 0; CuAssertStrEquals(tc, front, details.buffer); }
void TestCuSuiteDetails_MultiplePasses(CuTest* tc) { CuSuite ts; CuTest tc1, tc2; CuString details; const char* expected; CuSuiteInit(&ts); CuTestInit(&tc1, "TestPasses", TestPasses); CuTestInit(&tc2, "TestPasses", TestPasses); CuStringInit(&details); CuSuiteAdd(&ts, &tc1); CuSuiteAdd(&ts, &tc2); CuSuiteRun(&ts); CuSuiteDetails(&ts, &details); CuAssertTrue(tc, ts.count == 2); CuAssertTrue(tc, ts.failCount == 0); expected = "OK (2 tests)\n"; CuAssertStrEquals(tc, expected, details.buffer); }
void CuAssertStrnEquals_LineMsg(CuTest* tc, const char* file, int line, const char* message, const char* expected, size_t explen, const char* actual) { CuString string; if ((explen == 0) || (expected == NULL && actual == NULL) || (expected != NULL && actual != NULL && strncmp(expected, actual, explen) == 0)) { return; } CuStringInit(&string); if (message != NULL) { CuStringAppend(&string, message); CuStringAppend(&string, ": "); } CuStringAppend(&string, "expected <"); CuStringAppend(&string, expected); CuStringAppend(&string, "> but was <"); CuStringAppend(&string, actual); CuStringAppend(&string, ">"); CuFailInternal(tc, file, line, &string); }
void CuFail_Line(CuTest *tc, const char *file, int line, const char *message2, const char *message) { CuString string; CuStringInit(&string); if (message2 != NULL) { CuStringAppend(&string, message2); CuStringAppend(&string, ": "); } CuStringAppend(&string, message); CuFailInternal(tc, file, line, &string); }
void TestCuSuiteSummary(CuTest* tc) { CuSuite ts; CuTest tc1, tc2; CuString summary; CuSuiteInit(&ts); CuTestInit(&tc1, "TestPasses", TestPasses); CuTestInit(&tc2, "TestFails", zTestFails); CuStringInit(&summary); CuSuiteAdd(&ts, &tc1); CuSuiteAdd(&ts, &tc2); CuSuiteRun(&ts); CuSuiteSummary(&ts, &summary); CuAssertTrue(tc, ts.count == 2); CuAssertTrue(tc, ts.failCount == 1); CuAssertStrEquals(tc, ".F\n\n", summary.buffer); }
void TestCuSuiteDetails_MultipleFails_gcclike(CuTest* tc) { CuSuite ts; CuTest tc1, tc2; CuString details; const char* front; const char* mid; const char* back; cuPreferences.outputFormat = CuOutputFormat_gcclike; CuSuiteInit(&ts); CuTestInit(&tc1, "TestFails1", zTestFails); CuTestInit(&tc2, "TestFails2", zTestFails); CuStringInit(&details); CuSuiteAdd(&ts, &tc1); CuSuiteAdd(&ts, &tc2); CuSuiteRun(&ts); CuSuiteDetails(&ts, &details); CuAssertTrue(tc, ts.count == 2); CuAssertTrue(tc, ts.failCount == 2); front = "There were 2 failures:\n" __FILE__ ":"; mid = "test should fail\n" __FILE__ ":"; back = "test should fail\n" "\n!!!FAILURES!!!\n" "Runs: 2 Passes: 0 Fails: 2\n"; CuAssertStrEquals(tc, back, details.buffer + strlen(details.buffer) - strlen(back)); CuAssert(tc, "Couldn't find middle", strstr(details.buffer, mid) != NULL); details.buffer[strlen(front)] = 0; CuAssertStrEquals(tc, front, details.buffer); }
CuString* CuStringNew(void) { CuString* str = (CuString*) malloc(sizeof(CuString)); CuStringInit(str); return str; }