#include #include #include "MockTestListener.h" MockTestListener::MockTestListener( std::string name ) : m_name( name ) , m_hasExpectationForStartTest( false ) , m_hasParametersExpectationForStartTest( false ) , m_expectedStartTestCallCount( 0 ) , m_startTestCall( 0 ) , m_hasExpectationForEndTest( false ) , m_hasParametersExpectationForEndTest( false ) , m_expectedEndTestCallCount( 0 ) , m_endTestCall( 0 ) , m_hasExpectationForStartSuite( false ) , m_hasParametersExpectationForStartSuite( false ) , m_expectedStartSuiteCallCount( 0 ) , m_startSuiteCall( 0 ) , m_hasExpectationForEndSuite( false ) , m_hasParametersExpectationForEndSuite( false ) , m_expectedEndSuiteCallCount( 0 ) , m_endSuiteCall( 0 ) , m_hasExpectationForStartTestRun( false ) , m_hasParametersExpectationForStartTestRun( false ) , m_expectedStartTestRunCallCount( 0 ) , m_startTestRunCall( 0 ) , m_hasExpectationForEndTestRun( false ) , m_hasParametersExpectationForEndTestRun( false ) , m_expectedEndTestRunCallCount( 0 ) , m_endTestRunCall( 0 ) , m_hasExpectationForAddFailure( false ) , m_hasExpectationForSomeFailure( false ) , m_hasParametersExpectationForAddFailure( false ) , m_expectedAddFailureCallCount( 0 ) , m_addFailureCall( 0 ) , m_expectedFailedTest( NULL ) , m_expectedException( NULL ) , m_expectedIsError( false ) { } void MockTestListener::setExpectFailure( CPPUNIT_NS::Test *failedTest, CPPUNIT_NS::Exception *thrownException, bool isError ) { m_hasExpectationForAddFailure = true; m_hasParametersExpectationForAddFailure = true; m_expectedAddFailureCallCount = 1; m_expectedFailedTest = failedTest; m_expectedException = thrownException; m_expectedIsError = isError; } void MockTestListener::setExpectNoFailure() { m_hasExpectationForAddFailure = true; m_expectedAddFailureCallCount = 0; } void MockTestListener::setExpectFailure() { m_hasExpectationForSomeFailure = true; } void MockTestListener::setExpectedAddFailureCall( int callCount ) { m_hasExpectationForAddFailure = true; m_expectedAddFailureCallCount = callCount; } void MockTestListener::setExpectStartTest( CPPUNIT_NS::Test *test ) { m_hasExpectationForStartTest = true; m_hasParametersExpectationForStartTest = true; m_expectedStartTestCallCount = 1; m_expectedStartTest = test; } void MockTestListener::setExpectedStartTestCall( int callCount ) { m_hasExpectationForStartTest = true; m_expectedStartTestCallCount = callCount; } void MockTestListener::setExpectEndTest( CPPUNIT_NS::Test *test ) { m_hasExpectationForEndTest = true; m_hasParametersExpectationForEndTest = true; m_expectedEndTestCallCount = 1; m_expectedEndTest = test; } void MockTestListener::setExpectedEndTestCall( int callCount ) { m_hasExpectationForEndTest = true; m_expectedEndTestCallCount = callCount; } void MockTestListener::setExpectStartSuite( CPPUNIT_NS::Test *test ) { m_hasExpectationForStartSuite = true; m_hasParametersExpectationForStartSuite = true; m_expectedStartSuiteCallCount = 1; m_expectedStartSuite = test; } void MockTestListener::setExpectedStartSuiteCall( int callCount ) { m_hasExpectationForStartSuite = true; m_expectedStartSuiteCallCount = callCount; } void MockTestListener::setExpectEndSuite( CPPUNIT_NS::Test *test ) { m_hasExpectationForEndSuite = true; m_hasParametersExpectationForEndSuite = true; m_expectedEndSuiteCallCount = 1; m_expectedEndSuite = test; } void MockTestListener::setExpectedEndSuiteCall( int callCount ) { m_hasExpectationForEndSuite = true; m_expectedEndSuiteCallCount = callCount; } void MockTestListener::setExpectStartTestRun( CPPUNIT_NS::Test *test, CPPUNIT_NS::TestResult *eventManager ) { m_hasExpectationForStartTestRun = true; m_hasParametersExpectationForStartTestRun = true; m_expectedStartTestRunCallCount = 1; m_expectedStartTestRun = test; m_expectedStartTestRun2 = eventManager; } void MockTestListener::setExpectedStartTestRunCall( int callCount ) { m_hasExpectationForStartTestRun = true; m_expectedStartTestRunCallCount = callCount; } void MockTestListener::setExpectEndTestRun( CPPUNIT_NS::Test *test, CPPUNIT_NS::TestResult *eventManager ) { m_hasExpectationForEndTestRun = true; m_hasParametersExpectationForEndTestRun = true; m_expectedEndTestRunCallCount = 1; m_expectedEndTestRun = test; m_expectedEndTestRun2 = eventManager; } void MockTestListener::setExpectedEndTestRunCall( int callCount ) { m_hasExpectationForEndTestRun = true; m_expectedEndTestRunCallCount = callCount; } void MockTestListener::addFailure( const CPPUNIT_NS::TestFailure &failure ) { if ( m_hasExpectationForAddFailure || m_hasExpectationForSomeFailure ) ++m_addFailureCall; if ( m_hasExpectationForAddFailure ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_addFailureCall <= m_expectedAddFailureCallCount ); } if ( m_hasParametersExpectationForAddFailure ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedFailedTest == failure.failedTest() ); CPPUNIT_ASSERT_MESSAGE( m_name + ": bad thrownException", m_expectedException == failure.thrownException() ); CPPUNIT_ASSERT_MESSAGE( m_name + ": bad isError", m_expectedIsError == failure.isError() ); } } void MockTestListener::startTest( CPPUNIT_NS::Test *test ) { if ( m_hasExpectationForStartTest ) { ++m_startTestCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_startTestCall <= m_expectedStartTestCallCount ); } if ( m_hasParametersExpectationForStartTest ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedStartTest == test ); } } void MockTestListener::endTest( CPPUNIT_NS::Test *test ) { if ( m_hasExpectationForEndTest ) { ++m_endTestCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_endTestCall <= m_expectedEndTestCallCount ); } if ( m_hasParametersExpectationForEndTest ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedEndTest == test ); } } void MockTestListener::startSuite( CPPUNIT_NS::Test *test ) { if ( m_hasExpectationForStartSuite ) { ++m_startSuiteCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_startSuiteCall <= m_expectedStartSuiteCallCount ); } if ( m_hasParametersExpectationForStartSuite ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedStartSuite == test ); } } void MockTestListener::endSuite( CPPUNIT_NS::Test *test ) { if ( m_hasExpectationForEndSuite ) { ++m_endSuiteCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_endSuiteCall <= m_expectedEndSuiteCallCount ); } if ( m_hasParametersExpectationForEndSuite ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedEndSuite == test ); } } void MockTestListener::startTestRun( CPPUNIT_NS::Test *test, CPPUNIT_NS::TestResult *eventManager ) { if ( m_hasExpectationForStartTestRun ) { ++m_startTestRunCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_startTestRunCall <= m_expectedStartTestRunCallCount ); } if ( m_hasParametersExpectationForStartTestRun ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedStartTestRun == test ); CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager", m_expectedStartTestRun2 == eventManager ); } } void MockTestListener::endTestRun( CPPUNIT_NS::Test *test, CPPUNIT_NS::TestResult *eventManager ) { if ( m_hasExpectationForEndTestRun ) { ++m_endTestRunCall; CPPUNIT_ASSERT_MESSAGE( m_name + ": unexpected call", m_endTestRunCall <= m_expectedEndTestRunCallCount ); } if ( m_hasParametersExpectationForEndTestRun ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": bad test", m_expectedEndTestRun == test ); CPPUNIT_ASSERT_MESSAGE( m_name + ": bad eventManager", m_expectedEndTestRun2 == eventManager ); } } void MockTestListener::verify() { if ( m_hasExpectationForStartTest ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTest calls", m_expectedStartTestCallCount, m_startTestCall ); } if ( m_hasExpectationForEndTest ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTest calls", m_expectedEndTestCallCount, m_endTestCall ); } if ( m_hasExpectationForStartSuite ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startSuite calls", m_expectedStartSuiteCallCount, m_startSuiteCall ); } if ( m_hasExpectationForEndSuite ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endSuite calls", m_expectedEndSuiteCallCount, m_endSuiteCall ); } if ( m_hasExpectationForStartTestRun ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing startTestRun calls", m_expectedStartTestRunCallCount, m_startTestRunCall ); } if ( m_hasExpectationForEndTestRun ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing endTestRun calls", m_expectedEndTestRunCallCount, m_endTestRunCall ); } if ( m_hasExpectationForAddFailure ) { CPPUNIT_ASSERT_EQUAL_MESSAGE( m_name + ": missing addFailure calls", m_expectedAddFailureCallCount, m_addFailureCall ); } if ( m_hasExpectationForSomeFailure ) { CPPUNIT_ASSERT_MESSAGE( m_name + ": there was no call to " "MockTestListener::addFailure()", m_addFailureCall > 0 ); } }