Mercurial > fife-parpg
view ext/UnitTest++/src/tests/TestTestMacros.cpp @ 37:0d325e9d5953
added unittest++ files into ext. Not hooked into build scripts yet
author | jasoka@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Sat, 12 Jul 2008 12:00:57 +0000 |
parents | |
children |
line wrap: on
line source
#include "../UnitTest++.h" #include "../TestMacros.h" #include "../TestList.h" #include "../TestResults.h" #include "../TestReporter.h" #include "RecordingReporter.h" using namespace UnitTest; namespace { TestList list1; TEST_EX(DummyTest, list1) { (void)testResults_; } TEST (TestsAreAddedToTheListThroughMacro) { CHECK (list1.GetHead() != 0); CHECK (list1.GetHead()->next == 0); } struct ThrowingThingie { ThrowingThingie() : dummy(false) { if (!dummy) throw "Oops"; } bool dummy; }; TestList list2; TEST_FIXTURE_EX(ThrowingThingie,DummyTestName,list2) { (void)testResults_; } TEST (ExceptionsInFixtureAreReportedAsHappeningInTheFixture) { RecordingReporter reporter; TestResults result(&reporter); list2.GetHead()->Run(result); CHECK (strstr(reporter.lastFailedMessage, "xception")); CHECK (strstr(reporter.lastFailedMessage, "fixture")); CHECK (strstr(reporter.lastFailedMessage, "ThrowingThingie")); } struct DummyFixture { int x; }; // We're really testing the macros so we just want them to compile and link SUITE(TestSuite1) { TEST(SimilarlyNamedTestsInDifferentSuitesWork) { (void)testResults_; } TEST_FIXTURE(DummyFixture,SimilarlyNamedFixtureTestsInDifferentSuitesWork) { (void)testResults_; } } SUITE(TestSuite2) { TEST(SimilarlyNamedTestsInDifferentSuitesWork) { (void)testResults_; } TEST_FIXTURE(DummyFixture,SimilarlyNamedFixtureTestsInDifferentSuitesWork) { (void)testResults_; } } TestList macroTestList1; TEST_EX(MacroTestHelper1,macroTestList1) { (void)testResults_; } TEST(TestAddedWithTEST_EXMacroGetsDefaultSuite) { CHECK(macroTestList1.GetHead() != NULL); CHECK_EQUAL ("MacroTestHelper1", macroTestList1.GetHead()->m_details.testName); CHECK_EQUAL ("DefaultSuite", macroTestList1.GetHead()->m_details.suiteName); } TestList macroTestList2; TEST_FIXTURE_EX(DummyFixture,MacroTestHelper2,macroTestList2) { (void)testResults_; } TEST(TestAddedWithTEST_FIXTURE_EXMacroGetsDefaultSuite) { CHECK(macroTestList2.GetHead() != NULL); CHECK_EQUAL ("MacroTestHelper2", macroTestList2.GetHead()->m_details.testName); CHECK_EQUAL ("DefaultSuite", macroTestList2.GetHead()->m_details.suiteName); } struct FixtureCtorThrows { FixtureCtorThrows() { throw "exception"; } }; TestList throwingFixtureTestList1; TEST_FIXTURE_EX(FixtureCtorThrows, FixtureCtorThrowsTestName, throwingFixtureTestList1) { (void)testResults_; } TEST(FixturesWithThrowingCtorsAreFailures) { CHECK(throwingFixtureTestList1.GetHead() != NULL); RecordingReporter reporter; TestResults result(&reporter); throwingFixtureTestList1.GetHead()->Run(result); int const failureCount = result.GetFailedTestCount(); CHECK_EQUAL(1, failureCount); CHECK(strstr(reporter.lastFailedMessage, "while constructing fixture")); } struct FixtureDtorThrows { ~FixtureDtorThrows() { throw "exception"; } }; TestList throwingFixtureTestList2; TEST_FIXTURE_EX(FixtureDtorThrows, FixtureDtorThrowsTestName, throwingFixtureTestList2) { (void)testResults_; } TEST(FixturesWithThrowingDtorsAreFailures) { CHECK(throwingFixtureTestList2.GetHead() != NULL); RecordingReporter reporter; TestResults result(&reporter); throwingFixtureTestList2.GetHead()->Run(result); int const failureCount = result.GetFailedTestCount(); CHECK_EQUAL(1, failureCount); CHECK(strstr(reporter.lastFailedMessage, "while destroying fixture")); } } // We're really testing if it's possible to use the same suite in two files // to compile and link successfuly (TestTestSuite.cpp has suite with the same name) // Note: we are outside of the anonymous namespace SUITE(SameTestSuite) { TEST(DummyTest1) { (void)testResults_; } }