mirror of
https://github.com/unittest-cpp/unittest-cpp
synced 2026-09-27 00:28:49 +03:00
Implement CHECK_ASSERT_DESCRIBED macro
This commit is contained in:
parent
622963563f
commit
5bf7a1529c
3 changed files with 96 additions and 0 deletions
|
|
@ -247,5 +247,13 @@
|
|||
CHECK_THROW(expression, UnitTest::AssertException); \
|
||||
UnitTest::Detail::ExpectAssert(false); \
|
||||
UNITTEST_MULTILINE_MACRO_END
|
||||
|
||||
#define CHECK_ASSERT_DESCRIBED(expression, description) \
|
||||
UNITTEST_MULTILINE_MACRO_BEGIN \
|
||||
UnitTest::Detail::ExpectAssert(true); \
|
||||
CHECK_THROW_DESCRIBED(expression, UnitTest::AssertException, description); \
|
||||
UnitTest::Detail::ExpectAssert(false); \
|
||||
UNITTEST_MULTILINE_MACRO_END
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1309,6 +1309,89 @@ TEST(CheckAssertDoesNotHaveSideEffectsWhenFailing)
|
|||
CHECK_EQUAL(1, g_sideEffect);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedSucceedsWhenAssertThrown)
|
||||
{
|
||||
bool failure = true;
|
||||
{
|
||||
RecordingReporter reporter;
|
||||
UnitTest::TestResults testResults(&reporter);
|
||||
ScopedCurrentTest scopedResults(testResults);
|
||||
CHECK_ASSERT_DESCRIBED(Assert(), "description");
|
||||
failure = (testResults.GetFailureCount() > 0);
|
||||
}
|
||||
|
||||
CHECK(!failure);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedFailsWhenAssertNotThrown)
|
||||
{
|
||||
bool failure = false;
|
||||
{
|
||||
RecordingReporter reporter;
|
||||
UnitTest::TestResults testResults(&reporter);
|
||||
ScopedCurrentTest scopedResults(testResults);
|
||||
CHECK_ASSERT_DESCRIBED(NoAssert(), "description");
|
||||
failure = (testResults.GetFailureCount() > 0);
|
||||
}
|
||||
|
||||
CHECK(failure);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedFailsWhenWrongTypeThrown)
|
||||
{
|
||||
bool failure = false;
|
||||
{
|
||||
RecordingReporter reporter;
|
||||
UnitTest::TestResults testResults(&reporter);
|
||||
ScopedCurrentTest scopedResults(testResults);
|
||||
CHECK_ASSERT_DESCRIBED(ThrowInt(), "description");
|
||||
failure = (testResults.GetFailureCount() > 0);
|
||||
}
|
||||
|
||||
CHECK(failure);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedFailureContainsCorrectDetails)
|
||||
{
|
||||
int line = 0;
|
||||
RecordingReporter reporter;
|
||||
{
|
||||
UnitTest::TestResults testResults(&reporter);
|
||||
UnitTest::TestDetails const testDetails("testName", "suiteName", "filename", -1);
|
||||
ScopedCurrentTest scopedResults(testResults, &testDetails);
|
||||
|
||||
CHECK_ASSERT_DESCRIBED(ThrowInt(), "description " << hex << 0x1234); line = __LINE__;
|
||||
}
|
||||
|
||||
CHECK_EQUAL("testName", reporter.lastFailedTest);
|
||||
CHECK_EQUAL("suiteName", reporter.lastFailedSuite);
|
||||
CHECK_EQUAL("filename", reporter.lastFailedFile);
|
||||
CHECK_EQUAL("description 1234", reporter.lastFailedMessage);
|
||||
CHECK_EQUAL(line, reporter.lastFailedLine);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedDoesNotHaveSideEffectsWhenPassing)
|
||||
{
|
||||
g_sideEffect = 0;
|
||||
{
|
||||
UnitTest::TestResults testResults;
|
||||
ScopedCurrentTest scopedResults(testResults);
|
||||
CHECK_ASSERT_DESCRIBED(AssertWithSideEffect(), "description");
|
||||
}
|
||||
CHECK_EQUAL(1, g_sideEffect);
|
||||
}
|
||||
|
||||
TEST(CheckAssertDescribedDoesNotHaveSideEffectsWhenFailing)
|
||||
{
|
||||
g_sideEffect = 0;
|
||||
{
|
||||
UnitTest::TestResults testResults;
|
||||
ScopedCurrentTest scopedResults(testResults);
|
||||
CHECK_ASSERT_DESCRIBED(ThrowIntWithSideEffect(), "description");
|
||||
}
|
||||
CHECK_EQUAL(1, g_sideEffect);
|
||||
}
|
||||
|
||||
#endif // UNITTEST_NO_EXCEPTIONS
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -120,6 +120,11 @@ TEST(CheckAssertSucceeds)
|
|||
CHECK_ASSERT(UnitTest::ReportAssert("desc", "file", 0));
|
||||
}
|
||||
|
||||
TEST(CanUseCheckAssertDescribedToGetCustomFailureMessage)
|
||||
{
|
||||
CHECK_ASSERT_DESCRIBED(UnitTest::ReportAssert("desc", "file", 0), "This should really trigger an assert");
|
||||
}
|
||||
|
||||
TEST(CheckThrowMacroFailsOnMissingException)
|
||||
{
|
||||
class NoThrowTest : public UnitTest::Test
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue