From 33e90e67c521512fb49c3d3427c766123b79e65d Mon Sep 17 00:00:00 2001 From: Patrick Johnmeyer Date: Sun, 3 Feb 2013 00:47:52 -0600 Subject: [PATCH] CHECK_EQUAL no longer crashes if string pointers are NULL. --- src/Checks.cpp | 4 ++-- src/tests/TestChecks.cpp | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/Checks.cpp b/src/Checks.cpp index 2d09519..3e09231 100644 --- a/src/Checks.cpp +++ b/src/Checks.cpp @@ -10,10 +10,10 @@ void CheckStringsEqual(TestResults& results, char const* expected, char const* a { using namespace std; - if (strcmp(expected, actual)) + if ((expected && actual) ? strcmp(expected, actual) : (expected || actual)) { UnitTest::MemoryOutStream stream; - stream << "Expected " << expected << " but was " << actual; + stream << "Expected " << (expected ? expected : "") << " but was " << (actual ? actual : ""); results.OnTestFailure(details, stream.GetText()); } diff --git a/src/tests/TestChecks.cpp b/src/tests/TestChecks.cpp index 110102a..3d73b99 100644 --- a/src/tests/TestChecks.cpp +++ b/src/tests/TestChecks.cpp @@ -72,6 +72,33 @@ TEST(CheckEqualsWithStringsWorksOnContentsWithALiteral) CHECK_EQUAL(0, results.GetFailureCount()); } +TEST(CheckEqualsWithStringsWorksOnNullExpected) +{ + char const* const expected = "hi"; + char const* const actual = NULL; + TestResults results; + CheckEqual(results, expected, actual, TestDetails("", "", "", 0)); + CHECK_EQUAL (1, results.GetFailureCount()); +} + +TEST(CheckEqualsWithStringsWorksOnNullActual) +{ + char const* const expected = NULL; + char const* const actual = "hi"; + TestResults results; + CheckEqual(results, expected, actual, TestDetails("", "", "", 0)); + CHECK_EQUAL (1, results.GetFailureCount()); +} + +TEST(CheckEqualsWithStringsWorksOnNullExpectedAndActual) +{ + char const* const expected = NULL; + char const* const actual = NULL; + TestResults results; + CheckEqual(results, expected, actual, TestDetails("", "", "", 0)); + CHECK_EQUAL (0, results.GetFailureCount()); +} + TEST(CheckEqualFailureIncludesCheckExpectedAndActual) { RecordingReporter reporter;