8000 Merge pull request #25 from pjohnmeyer/fixCheckEqualExplodesIfNull · unittest-cpp/unittest-cpp@c5cc43c · GitHub
[go: up one dir, main page]

Skip to content

Commit c5cc43c

Browse files
committed
Merge pull request #25 from pjohnmeyer/fixCheckEqualExplodesIfNull
CHECK_EQUAL no longer crashes if string pointers are NULL. Closes #8.
2 parents aeaae3e + 69acc43 commit c5cc43c

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/Checks.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@ void CheckStringsEqual(TestResults& results, char const* expected, char const* a
1010
{
1111
using namespace std;
1212

13-
if (strcmp(expected, actual))
13+
if ((expected && actual) ? strcmp(expected, actual) : (expected || actual))
1414
{
1515
UnitTest::MemoryOutStream stream;
16-
stream << "Expected " << expected << " but was " << actual;
16+
stream << "Expected " << (expected ? expected : "<NULLPTR>") << " but was " << (actual ? actual : "<NULLPTR>");
1717

1818
results.OnTestFailure(details, stream.GetText());
1919
}

src/tests/TestChecks.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,33 @@ TEST(CheckEqualsWithStringsWorksOnContentsWithALiteral)
7272
CHECK_EQUAL(0, results.GetFailureCount());
7373
}
7474

75+
TEST(CheckEqualsWithStringsWorksOnNullExpected)
76+
{
77+
char const* const expected = "hi";
78+
char const* const actual = NULL;
79+
TestResults results;
80+
CheckEqual(results, expected, actual, TestDetails("", "", "", 0));
81+
CHECK_EQUAL (1, results.GetFailureCount());
82+
}
83+
84+
TEST(CheckEqualsWithStringsWorksOnNullActual)
85+
{
86+
char const* const expected = NULL;
87+
char const* const actual = "hi";
88+
TestResults results;
89+
CheckEqual(results, expected, actual, TestDetails("", "", "", 0));
90+
CHECK_EQUAL (1, results.GetFailureCount());
91+
}
92+
93+
TEST(CheckEqualsWithStringsWorksOnNullExpectedAndActual)
94+
{
95+
char const* const expected = NULL;
96+
char const* const actual = NULL;
97+
TestResults results;
98+
CheckEqual(results, expected, actual, TestDetails("", "", "", 0));
99+
CHECK_EQUAL (0, results.GetFailureCount());
100+
}
101+
75102
TEST(CheckEqualFailureIncludesCheckExpectedAndActual)
76103
{
77104
RecordingReporter reporter;

0 commit comments

Comments
 (0)
0