#include "CoreSuite.h" #include "TestResultCollectorTest.h" CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( TestResultCollectorTest, coreSuiteName() ); TestResultCollectorTest::TestResultCollectorTest() { } TestResultCollectorTest::~TestResultCollectorTest() { } void TestResultCollectorTest::setUp() { m_lockCount = 0; m_unlockCount = 0; m_result = new CPPUNIT_NS::TestResultCollector(); m_synchronizedResult = new SynchronizedTestResult( this ); m_test = new CPPUNIT_NS::TestCase(); m_test2 = new CPPUNIT_NS::TestCase(); } void TestResultCollectorTest::tearDown() { delete m_test2; delete m_test; delete m_synchronizedResult; delete m_result; } void TestResultCollectorTest::testConstructor() { checkResult( 0, 0, 0 ); } void TestResultCollectorTest::testAddTwoErrors() { CPPUNIT_NS::Message errorMessage1( "First Error" ); CPPUNIT_NS::Message errorMessage2( "Second Error" ); { CPPUNIT_NS::TestFailure failure1( m_test, new CPPUNIT_NS::Exception( errorMessage1 ), true ); m_result->addFailure( failure1 ); CPPUNIT_NS::TestFailure failure2( m_test2, new CPPUNIT_NS::Exception( errorMessage2 ), true ); m_result->addFailure( failure2 ); } // ensure that the test result duplicate the failures. checkResult( 0, 2, 0 ); checkFailure( m_result->failures()[0], errorMessage1, m_test, true ); checkFailure( m_result->failures()[1], errorMessage2, m_test2, true ); } void TestResultCollectorTest::testAddTwoFailures() { CPPUNIT_NS::Message errorMessage1( "First Failure" ); CPPUNIT_NS::Message errorMessage2( "Second Failure" ); { CPPUNIT_NS::TestFailure failure1( m_test, new CPPUNIT_NS::Exception( errorMessage1 ), false ); m_result->addFailure( failure1 ); CPPUNIT_NS::TestFailure failure2( m_test2, new CPPUNIT_NS::Exception( errorMessage2 ), false ); m_result->addFailure( failure2 ); } // ensure that the test result duplicate the failures. checkResult( 2, 0, 0 ); checkFailure( m_result->failures()[0], errorMessage1, m_test, false ); checkFailure( m_result->failures()[1], errorMessage2, m_test2, false ); } void TestResultCollectorTest::testStartTest() { m_result->startTest( m_test ); m_result->startTest( m_test ); checkResult( 0, 0, 2 ); } void TestResultCollectorTest::testWasSuccessfulWithNoTest() { checkWasSuccessful( true ); } void TestResultCollectorTest::testWasSuccessfulWithErrors() { addError( "Error1" ); addError( "Error2" ); checkWasSuccessful( false ); } void TestResultCollectorTest::testWasSuccessfulWithFailures() { addFailure( "Failure1" ); addFailure( "Failure2" ); checkWasSuccessful( false ); } void TestResultCollectorTest::testWasSuccessfulWithErrorsAndFailures() { addError( "Error1" ); addFailure( "Failure2" ); checkWasSuccessful( false ); } void TestResultCollectorTest::testWasSuccessfulWithSuccessfulTest() { m_result->startTest( m_test ); m_result->endTest( m_test ); m_result->startTest( m_test2 ); m_result->endTest( m_test2 ); checkWasSuccessful( true ); } void TestResultCollectorTest::testSynchronizationAddFailure() { addFailure( "Failure1", m_test, false, m_synchronizedResult ); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationStartTest() { m_synchronizedResult->startTest( m_test ); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationRunTests() { m_synchronizedResult->runTests(); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationTestErrors() { m_synchronizedResult->testErrors(); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationTestFailures() { m_synchronizedResult->testFailures(); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationFailures() { m_synchronizedResult->failures(); checkSynchronization(); } void TestResultCollectorTest::testSynchronizationWasSuccessful() { m_synchronizedResult->wasSuccessful(); checkSynchronization(); } void TestResultCollectorTest::checkResult( int failures, int errors, int testsRun ) { CPPUNIT_ASSERT_EQUAL( testsRun, m_result->runTests() ); CPPUNIT_ASSERT_EQUAL( errors, m_result->testErrors() ); CPPUNIT_ASSERT_EQUAL( failures, m_result->testFailures() ); CPPUNIT_ASSERT_EQUAL( errors + failures, m_result->testFailuresTotal() ); } void TestResultCollectorTest::checkFailure( CPPUNIT_NS::TestFailure *failure, CPPUNIT_NS::Message expectedMessage, CPPUNIT_NS::Test *expectedTest, bool expectedIsError ) { CPPUNIT_NS::Message actualMessage( failure->thrownException()->message() ); CPPUNIT_ASSERT( expectedMessage == actualMessage ); CPPUNIT_ASSERT_EQUAL( expectedTest, failure->failedTest() ); CPPUNIT_ASSERT_EQUAL( expectedIsError, failure->isError() ); } void TestResultCollectorTest::checkWasSuccessful( bool shouldBeSuccessful ) { CPPUNIT_ASSERT_EQUAL( shouldBeSuccessful, m_result->wasSuccessful() ); } void TestResultCollectorTest::locked() { CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); ++m_lockCount; } void TestResultCollectorTest::unlocked() { ++m_unlockCount; CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); } void TestResultCollectorTest::checkSynchronization() { CPPUNIT_ASSERT_EQUAL( m_lockCount, m_unlockCount ); CPPUNIT_ASSERT( m_lockCount > 0 ); } void TestResultCollectorTest::addFailure( std::string message ) { addFailure( message, m_test, false, m_result ); } void TestResultCollectorTest::addError( std::string message ) { addFailure( message, m_test, true, m_result ); } void TestResultCollectorTest::addFailure( std::string message, CPPUNIT_NS::Test *failedTest, bool isError, CPPUNIT_NS::TestResultCollector *result ) { CPPUNIT_NS::TestFailure failure( failedTest, new CPPUNIT_NS::Exception( CPPUNIT_NS::Message( message ) ), isError ); result->addFailure( failure ); }