[Cppunit-cvs] cppunit2/src/cpputtest assertenumtest.cpp, 1.3, 1.4 assertstringtest.cpp, 1.6, 1.7 co
Brought to you by:
blep
From: Baptiste L. <bl...@us...> - 2007-08-14 17:31:13
|
Update of /cvsroot/cppunit/cppunit2/src/cpputtest In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv5281/src/cpputtest Modified Files: assertenumtest.cpp assertstringtest.cpp commandlineoptionstest.cpp commandlineoptionstest.h mocktestlistener.h smallmaptest.cpp smallmaptest.h testinfotest.cpp Log Message: Modified assertion implementation to force evaluation of user condition expression first, while preserving delegation to function, overloading and optional parameters feature. See CPPUT_BEGIN_ASSERTION_MACRO() documentation in testinfo.h for an example to update your custom assertion code. New implementation rely on operator evaluation order and operator overloading. The trick is documented in CPPUT_BEGIN_ASSERTION_MACRO(). Index: smallmaptest.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/smallmaptest.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** smallmaptest.cpp 6 Sep 2006 19:23:26 -0000 1.2 --- smallmaptest.cpp 14 Aug 2007 17:30:52 -0000 1.3 *************** *** 18,28 **** ! void SmallMapTest::checkEraseRange( int minSeed, int maxSeed, int beginRange, int endRange) { ! CppUT::checkTrue( beginRange >= minSeed && beginRange <= maxSeed ); ! CppUT::checkTrue( endRange >= minSeed && endRange <= maxSeed ); ! CppUT::checkTrue( beginRange <= endRange ); ! CppUT::checkTrue( minSeed <= maxSeed ); SmallMapIntInt sm; for ( int generator = minSeed; generator < maxSeed; ++generator ) --- 18,30 ---- ! CppUT::CheckerResult SmallMapTest::checkEraseRange( int minSeed, int maxSeed, int beginRange, int endRange) { ! CppUT::CheckerResult result; ! result.compose( CppUT::checkTrue( beginRange >= minSeed && beginRange <= maxSeed ) ); ! result.compose( CppUT::checkTrue( endRange >= minSeed && endRange <= maxSeed ) ); ! result.compose( CppUT::checkTrue( beginRange <= endRange ) ); ! result.compose( CppUT::checkTrue( minSeed <= maxSeed ) ); ! // @todo fix this and skip following if result has failed. SmallMapIntInt sm; for ( int generator = minSeed; generator < maxSeed; ++generator ) *************** *** 34,46 **** CppTL::ConstString msg = "Checking key: " + CppTL::toString( checker ); int expected = (checker >= beginRange && checker < endRange) ? 0 : 1; ! CppUT::checkEquals( expected, sm.count(checker), msg ); } ! CppUT::checkEquals( maxSeed-minSeed - (endRange-beginRange), sm.size() ); } ! void SmallMapTest::checkEraseIterator( int minSeed, int maxSeed, int value ) { CppUT::checkTrue( minSeed <= maxSeed && value >= minSeed && value < maxSeed ); SmallMapIntInt sm; --- 36,50 ---- CppTL::ConstString msg = "Checking key: " + CppTL::toString( checker ); int expected = (checker >= beginRange && checker < endRange) ? 0 : 1; ! result.compose( CppUT::checkEquals( expected, sm.count(checker), msg ) ); } ! result.compose( CppUT::checkEquals( maxSeed-minSeed - (endRange-beginRange), sm.size() ) ); ! return result; } ! CppUT::CheckerResult SmallMapTest::checkEraseIterator( int minSeed, int maxSeed, int value ) { + CppUT::CheckerResult result; CppUT::checkTrue( minSeed <= maxSeed && value >= minSeed && value < maxSeed ); SmallMapIntInt sm; *************** *** 52,58 **** CppTL::ConstString msg = "Checking key: " + CppTL::toString( checker ); int expected = (checker == value) ? 0 : 1; ! CppUT::checkEquals( expected, sm.count(checker), msg ); } ! CppUT::checkEquals( maxSeed-minSeed - 1, sm.size() ); } --- 56,63 ---- CppTL::ConstString msg = "Checking key: " + CppTL::toString( checker ); int expected = (checker == value) ? 0 : 1; ! result.compose( CppUT::checkEquals( expected, sm.count(checker), msg ) ); } ! result.compose( CppUT::checkEquals( maxSeed-minSeed - 1, sm.size() ) ); ! return result; } Index: commandlineoptionstest.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/commandlineoptionstest.h,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** commandlineoptionstest.h 13 Nov 2005 10:12:01 -0000 1.4 --- commandlineoptionstest.h 14 Aug 2007 17:30:52 -0000 1.5 *************** *** 51,59 **** private: ! void checkParse( CppUTTools::CommandLineOptions::OptionsDescription &description, ! const char *argv[] ); ! void checkParseBadOption( CppUTTools::CommandLineOptions::OptionsDescription &description, ! const char *argv[], ! const CppTL::ConstString &badOptionName ); enum LogLevel { --- 51,59 ---- private: ! CppUT::CheckerResult checkParse( CppUTTools::CommandLineOptions::OptionsDescription &description, ! const char *argv[] ); ! CppUT::CheckerResult checkParseBadOption( CppUTTools::CommandLineOptions::OptionsDescription &description, ! const char *argv[], ! const CppTL::ConstString &badOptionName ); enum LogLevel { Index: assertenumtest.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/assertenumtest.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** assertenumtest.cpp 23 Feb 2005 23:09:29 -0000 1.3 --- assertenumtest.cpp 14 Aug 2007 17:30:52 -0000 1.4 *************** *** 41,62 **** { CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( vEmpty_ ), ! CppTL::Enum::container( v123_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v321_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v122_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v4321_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v1234_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v1234_ ), ! CppTL::Enum::container( v123_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( vEmpty_ ), ! CppTL::Enum::container( vEmpty_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v122_ ), ! CppTL::Enum::container( v122_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v1234_ ), ! CppTL::Enum::container( v1234_ ) ) )); } --- 41,62 ---- { CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( vEmpty_ ), ! CppTL::Enum::container( v123_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v321_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v122_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v4321_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v123_ ), ! CppTL::Enum::container( v1234_ ) ) )); CPPUT_ASSERT_ASSERTION_FAIL(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v1234_ ), ! CppTL::Enum::container( v123_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( vEmpty_ ), ! CppTL::Enum::container( vEmpty_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v122_ ), ! CppTL::Enum::container( v122_ ) ) )); CPPUT_ASSERT_ASSERTION_PASS(( CPPUT_ASSERT_SEQUENCE_EQUAL( CppTL::Enum::container( v1234_ ), ! CppTL::Enum::container( v1234_ ) ) )); } Index: commandlineoptionstest.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/commandlineoptionstest.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** commandlineoptionstest.cpp 27 Feb 2005 10:17:06 -0000 1.5 --- commandlineoptionstest.cpp 14 Aug 2007 17:30:52 -0000 1.6 *************** *** 28,35 **** ! void CommandLineOptionsTest::checkParse( CommandLineOptions::OptionsDescription &description, const char *argv[] ) { delete values_; values_ = new CommandLineOptions::OptionsValues(); --- 28,36 ---- ! CppUT::CheckerResult CommandLineOptionsTest::checkParse( CommandLineOptions::OptionsDescription &description, const char *argv[] ) { + CppUT::CheckerResult result; // What can make the test fails ??? delete values_; values_ = new CommandLineOptions::OptionsValues(); *************** *** 42,64 **** values_->validate( description ); values_->store( description ); } ! void CommandLineOptionsTest::checkParseBadOption( CommandLineOptions::OptionsDescription &description, const char *argv[], const CppTL::ConstString &badOptionName ) { try { ! checkParse( description, argv ); ! CppUT::fail( "Bad option '" + badOptionName + "' not detected" ); } catch ( const CommandLineOptions::CommandLineParseError &e ) { ! CppUT::checkEquals( CommandLineOptions::CommandLineParseError::invalidOptionName, ! e.cause() ); ! CppUT::checkEquals( badOptionName, e.optionName() ); } } --- 43,69 ---- values_->validate( description ); values_->store( description ); + return result; } ! CppUT::CheckerResult CommandLineOptionsTest::checkParseBadOption( CommandLineOptions::OptionsDescription &description, const char *argv[], const CppTL::ConstString &badOptionName ) { + CppUT::CheckerResult result; try { ! result = checkParse( description, argv ); ! result.setFailed(); ! result.message_.add( "Bad option '" + badOptionName + "' not detected" ); } catch ( const CommandLineOptions::CommandLineParseError &e ) { ! result.compose( CppUT::checkEquals( CommandLineOptions::CommandLineParseError::invalidOptionName, ! e.cause() ) ); ! result.compose( CppUT::checkEquals( badOptionName, e.optionName() ) ); } + return result; } Index: smallmaptest.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/smallmaptest.h,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** smallmaptest.h 5 Jun 2006 12:09:26 -0000 1.1 --- smallmaptest.h 14 Aug 2007 17:30:52 -0000 1.2 *************** *** 34,39 **** private: ! void checkEraseRange( int minSeed, int maxSeed, int beginRange, int endRange); ! void checkEraseIterator( int minSeed, int maxSeed, int value ); }; --- 34,39 ---- private: ! CppUT::CheckerResult checkEraseRange( int minSeed, int maxSeed, int beginRange, int endRange); ! CppUT::CheckerResult checkEraseIterator( int minSeed, int maxSeed, int value ); }; Index: mocktestlistener.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/mocktestlistener.h,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** mocktestlistener.h 4 Aug 2004 06:43:57 -0000 1.3 --- mocktestlistener.h 14 Aug 2007 17:30:52 -0000 1.4 *************** *** 25,29 **** { ++testResultCount_; ! if ( result.failed() ) ++testFailedCount_; else --- 25,29 ---- { ++testResultCount_; ! if ( result.setFailed() ) ++testFailedCount_; else Index: assertstringtest.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/assertstringtest.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** assertstringtest.cpp 1 Feb 2006 18:26:17 -0000 1.6 --- assertstringtest.cpp 14 Aug 2007 17:30:52 -0000 1.7 *************** *** 7,10 **** --- 7,11 ---- #endif + namespace { *************** *** 132,133 **** --- 133,140 ---- } + + + + + + Index: testinfotest.cpp =================================================================== RCS file: /cvsroot/cppunit/cppunit2/src/cpputtest/testinfotest.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** testinfotest.cpp 13 Nov 2005 10:12:01 -0000 1.2 --- testinfotest.cpp 14 Aug 2007 17:30:52 -0000 1.3 *************** *** 25,40 **** } ! void check( int assertion, int failed, int ignored, CppUT::TestStatus::Status status = CppUT::TestStatus::passed ) { ! CppUT::checkEquals( assertion, status_.assertionCount(), "bad assertion count" ); ! CppUT::checkEquals( failed, status_.failedAssertionCount(), "bad failed assertion count" ); ! CppUT::checkEquals( ignored, status_.ignoredFailureCount(), "bad ignored failure count" ); ! CppUT::checkEquals( status, status_.status(), "bad status" ); ! ! // restore original status ! CppUT::TestInfo::threadInstance().testStatus() = status_; } --- 25,39 ---- } ! CppUT::CheckerResult check( int assertion, int failed, int ignored, CppUT::TestStatus::Status status = CppUT::TestStatus::passed ) { ! CppUT::CheckerResult result; ! result.compose( CppUT::checkEquals( assertion, status_.assertionCount(), "bad assertion count" ) ); ! result.compose( CppUT::checkEquals( failed, status_.failedAssertionCount(), "bad failed assertion count" ) ); ! result.compose( CppUT::checkEquals( ignored, status_.ignoredFailureCount(), "bad ignored failure count" ) ); ! result.compose( CppUT::checkEquals( status, status_.status(), "bad status" ) ); ! return result; } *************** *** 105,110 **** } ! void verify() { std::string expected; std::string actual; --- 104,110 ---- } ! CppUT::CheckerResult verify() { + CppUT::CheckerResult result; std::string expected; std::string actual; *************** *** 119,131 **** if ( index < minCount || expectedEvents_.size() != actualEvents_.size() ) { ! CppUT::Message message( "Expected and actual test event sequences did not match" ); std::string indexStr = CppTL::toString( index ).c_str(); ! message.add( "Difference at index " + indexStr ); ! message.add( "Expected:\n" + toString( expectedEvents_ ) ); ! message.add( "Actual :\n" + toString( actualEvents_ ) ); ! CppUT::fail( message ); } reset(); } --- 119,132 ---- if ( index < minCount || expectedEvents_.size() != actualEvents_.size() ) { ! result.setFailed(); ! result.message_ = CppUT::Message( "Expected and actual test event sequences did not match" ); std::string indexStr = CppTL::toString( index ).c_str(); ! result.message_.add( "Difference at index " + indexStr ); ! result.message_.add( "Expected:\n" + toString( expectedEvents_ ) ); ! result.message_.add( "Actual :\n" + toString( actualEvents_ ) ); } reset(); + return result; } *************** *** 160,167 **** // Assumes a local variable named 'count of type AssertionCount is declared ! #define TESTINFO_ASSERT_STATUS_IS \ count.captureStatus(), /* capture test statistics */ \ CPPUT_BEGIN_ASSERTION_MACRO() /* warning: change test statistics */ \ ! count.check #define TESTINFO_IGNORE( assertion ) \ --- 161,175 ---- // Assumes a local variable named 'count of type AssertionCount is declared ! #define TESTINFO_ASSERT_STATISTICS_ARE( assertion, failed, ignore ) \ count.captureStatus(), /* capture test statistics */ \ CPPUT_BEGIN_ASSERTION_MACRO() /* warning: change test statistics */ \ ! count.check( assertion, failed, ignore ); \ ! CppUT::TestInfo::threadInstance().testStatus() = count.status_; ! ! #define TESTINFO_ASSERT_STATUS_IS( assertion, failed, ignore, status ) \ ! count.captureStatus(), /* capture test statistics */ \ ! CPPUT_BEGIN_ASSERTION_MACRO() /* warning: change test statistics */ \ ! count.check( assertion, failed, ignore, status ); \ ! CppUT::TestInfo::threadInstance().testStatus() = count.status_; #define TESTINFO_IGNORE( assertion ) \ *************** *** 180,189 **** count.resetStatistics(); CPPUT_ASSERT( true ); ! TESTINFO_ASSERT_STATUS_IS( 1, 0, 0 ); // successful checking assertion count.resetStatistics(); CPPUT_CHECK( true ); ! TESTINFO_ASSERT_STATUS_IS( 1, 0, 0 ); // failing aborting assertion --- 188,197 ---- count.resetStatistics(); CPPUT_ASSERT( true ); ! TESTINFO_ASSERT_STATISTICS_ARE( 1, 0, 0 ); // successful checking assertion count.resetStatistics(); CPPUT_CHECK( true ); ! TESTINFO_ASSERT_STATISTICS_ARE( 1, 0, 0 ); // failing aborting assertion *************** *** 210,219 **** count.resetStatistics(); CPPUT_IGNORE_FAILURE(( CPPUT_ASSERT( false ) )); ! TESTINFO_ASSERT_STATUS_IS( 1, 0, 1 ); // ignored failing checking assertion count.resetStatistics(); CPPUT_IGNORE_FAILURE(( CPPUT_CHECK( false ) )); ! TESTINFO_ASSERT_STATUS_IS( 1, 0, 1 ); // skipped test --- 218,227 ---- count.resetStatistics(); CPPUT_IGNORE_FAILURE(( CPPUT_ASSERT( false ) )); ! TESTINFO_ASSERT_STATISTICS_ARE( 1, 0, 1 ); // ignored failing checking assertion count.resetStatistics(); CPPUT_IGNORE_FAILURE(( CPPUT_CHECK( false ) )); ! TESTINFO_ASSERT_STATISTICS_ARE( 1, 0, 1 ); // skipped test |