#include "UnitTest++/UnitTestPP.h" #include "ScopedCurrentTest.h" // These are sample tests that show the different features of the framework namespace { TEST(ValidCheckSucceeds) { bool const b = true; CHECK(b); } TEST(CheckWorksWithPointers) { void* p = (void *)0x100; CHECK(p); CHECK(p != 0); } TEST(ValidCheckEqualSucceeds) { int const x = 3; int const y = 3; CHECK_EQUAL(x, y); } TEST(CheckEqualWorksWithPointers) { void* p = (void *)0; CHECK_EQUAL((void*)0, p); } TEST(ValidCheckCloseSucceeds) { CHECK_CLOSE(2.0f, 2.001f, 0.01f); CHECK_CLOSE(2.001f, 2.0f, 0.01f); } TEST(ArrayCloseSucceeds) { float const a1[] = {1, 2, 3}; float const a2[] = {1, 2.01f, 3}; CHECK_ARRAY_CLOSE(a1, a2, 3, 0.1f); } #ifndef UNITTEST_NO_EXCEPTIONS TEST(CheckThrowMacroSucceedsOnCorrectException) { struct TestException {}; CHECK_THROW(throw TestException(), TestException); } TEST(CheckAssertSucceeds) { CHECK_ASSERT(UnitTest::ReportAssert("desc", "file", 0)); } TEST(CheckThrowMacroFailsOnMissingException) { class NoThrowTest : public UnitTest::Test { public: NoThrowTest() : Test("nothrow") {} void DontThrow() const { } virtual void RunImpl() const { CHECK_THROW(DontThrow(), int); } }; UnitTest::TestResults results; { ScopedCurrentTest scopedResults(results); NoThrowTest test; test.Run(); } CHECK_EQUAL(1, results.GetFailureCount()); } TEST(CheckThrowMacroFailsOnWrongException) { class WrongThrowTest : public UnitTest::Test { public: WrongThrowTest() : Test("wrongthrow") {} virtual void RunImpl() const { CHECK_THROW(throw "oops", int); } }; UnitTest::TestResults results; { ScopedCurrentTest scopedResults(results); WrongThrowTest test; test.Run(); } CHECK_EQUAL(1, results.GetFailureCount()); } #endif struct SimpleFixture { SimpleFixture() { ++instanceCount; } ~SimpleFixture() { --instanceCount; } static int instanceCount; }; int SimpleFixture::instanceCount = 0; TEST_FIXTURE(SimpleFixture, DefaultFixtureCtorIsCalled) { CHECK(SimpleFixture::instanceCount > 0); } TEST_FIXTURE(SimpleFixture, OnlyOneFixtureAliveAtATime) { CHECK_EQUAL(1, SimpleFixture::instanceCount); } void CheckBool(const bool b) { CHECK(b); } TEST(CanCallCHECKOutsideOfTestFunction) { CheckBool(true); } }