Thread: [Cppunit-cvs] cppunit2/include/cpput assertcommon.h, 1.2, 1.3 message.h, 1.11, 1.12
Brought to you by:
blep
From: Baptiste L. <bl...@us...> - 2006-09-02 11:24:57
|
Update of /cvsroot/cppunit/cppunit2/include/cpput In directory sc8-pr-cvs4.sourceforge.net:/tmp/cvs-serv13370/include/cpput Modified Files: assertcommon.h message.h Log Message: - added LazyMessage, a simple proxy class that avoid building Message until it is really needed (assertion failed). Index: assertcommon.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/include/cpput/assertcommon.h,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** assertcommon.h 13 Nov 2005 23:02:16 -0000 1.2 --- assertcommon.h 2 Sep 2006 11:24:53 -0000 1.3 *************** *** 11,31 **** namespace CppUT { ! void CPPUT_API fail( const Message &message = translate( "Assertion failed." ) ); void CPPUT_API checkTrue( bool shouldBeTrue, ! const Message &message = Message() ); void CPPUT_API checkFalse( bool shouldBeFalse, ! const Message &message = Message() ); void CPPUT_API checkAssertionFail( bool assertionFailed, ! const Message &message = Message() ); void CPPUT_API checkAssertionPass( bool assertionFailed, ! const Message &message = Message() ); Message CPPUT_API buildEqualityFailedMessage( const std::string &expected, const std::string &actual, ! const Message &message = Message() ); template<typename FirstType --- 11,33 ---- namespace CppUT { ! void CPPUT_API fail(); ! ! void CPPUT_API fail( const LazyMessage &message ); void CPPUT_API checkTrue( bool shouldBeTrue, ! const LazyMessage &message = LazyMessage::none ); void CPPUT_API checkFalse( bool shouldBeFalse, ! const LazyMessage &message = LazyMessage::none ); void CPPUT_API checkAssertionFail( bool assertionFailed, ! const LazyMessage &message = LazyMessage::none ); void CPPUT_API checkAssertionPass( bool assertionFailed, ! const LazyMessage &message = LazyMessage::none ); Message CPPUT_API buildEqualityFailedMessage( const std::string &expected, const std::string &actual, ! const LazyMessage &message = LazyMessage::none ); template<typename FirstType *************** *** 33,37 **** Message makeEqualityFailedMessage( const FirstType &expected, const SecondType &actual, ! const Message &message = Message() ) { --- 35,39 ---- Message makeEqualityFailedMessage( const FirstType &expected, const SecondType &actual, ! const LazyMessage &message = LazyMessage::none ) { *************** *** 59,63 **** void checkEquals( const FirstType &expected, const SecondType &actual, ! const Message &message = Message() ) { if ( equalityTest( expected, actual ) ) --- 61,65 ---- void checkEquals( const FirstType &expected, const SecondType &actual, ! const LazyMessage &message = LazyMessage::none ) { if ( equalityTest( expected, actual ) ) *************** *** 69,73 **** Message CPPUT_API buildUnequalityFailedMessage( const std::string &expected, const std::string &actual, ! const Message &message = Message() ); template<typename FirstType --- 71,75 ---- Message CPPUT_API buildUnequalityFailedMessage( const std::string &expected, const std::string &actual, ! const LazyMessage &message = LazyMessage::none ); template<typename FirstType *************** *** 75,79 **** Message makeUnequalityFailedMessage( const FirstType &expected, const SecondType &actual, ! const Message &message = Message() ) { --- 77,81 ---- Message makeUnequalityFailedMessage( const FirstType &expected, const SecondType &actual, ! const LazyMessage &message = LazyMessage::none ) { *************** *** 101,105 **** void checkNotEquals( const FirstType &expected, const SecondType &actual, ! const Message &message = Message() ) { if ( !( equalityTest( expected, actual ) ) ) --- 103,107 ---- void checkNotEquals( const FirstType &expected, const SecondType &actual, ! const LazyMessage &message = LazyMessage::none ) { if ( !( equalityTest( expected, actual ) ) ) *************** *** 112,116 **** double actual, double tolerance, ! const Message &message = Message() ); void CPPUT_API skipCurrentTest(); --- 114,118 ---- double actual, double tolerance, ! const LazyMessage &message = LazyMessage::none ); void CPPUT_API skipCurrentTest(); Index: message.h =================================================================== RCS file: /cvsroot/cppunit/cppunit2/include/cpput/message.h,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** message.h 8 Nov 2005 21:44:54 -0000 1.11 --- message.h 2 Sep 2006 11:24:53 -0000 1.12 *************** *** 2,8 **** # define CPPUT_MESSAGE_H_INCLUDED ! # include <cpput/config.h> # include <cpptl/conststring.h> - //# include <opentest/properties.h> # include <vector> --- 2,7 ---- # define CPPUT_MESSAGE_H_INCLUDED ! # include <cpput/forwards.h> # include <cpptl/conststring.h> # include <vector> *************** *** 10,117 **** namespace CppUT { class CPPUT_API Message { public: ! Message() ! { ! } ! Message( const CppTL::StringBuffer &shortDescription ) ! { ! add( shortDescription ); ! } ! Message( const CppTL::StringConcatenator &shortDescription ) ! { ! add( shortDescription ); ! } ! Message( const CppTL::ConstString &shortDescription ) ! { ! add( shortDescription ); ! } ! Message( const std::string &shortDescription ) ! { ! add( shortDescription ); ! } ! Message( const char *shortDescription ) ! { ! add( shortDescription ); ! } ! bool empty() const ! { ! return details_.empty(); ! } void insertAt( int index, ! const char *detail ) ! { ! insertAt( index, std::string(detail) ); ! } void insertAt( int index, ! const std::string &detail ) ! { ! details_.insert( details_.begin() + index, detail ); ! } void insertAt( int index, ! const Message &other ) ! { ! details_.insert( details_.begin() + index, ! other.details_.begin(), ! other.details_.end() ); ! } ! ! void add( const char *detail ) // needed to solve ambiguity due to implicit constructor ! { ! add( CppTL::ConstString(detail) ); ! } ! ! void add( const std::string &detail ) ! { ! details_.push_back( detail ); ! } ! ! void add( const CppTL::ConstString &detail ) ! { ! details_.push_back( detail ); ! } ! void extend( const Message &other ) ! { ! insertAt( int(details_.size()), other ); ! } ! int count() const ! { ! return int(details_.size()); ! } ! std::string at( int index ) const ! { ! return CPPTL_AT( details_, index ).str(); ! } ! std::string toString() const ! { ! CppTL::StringBuffer message; ! Details::const_iterator it = details_.begin(); ! Details::const_iterator itEnd = details_.end(); ! while ( it != itEnd ) ! { ! message += *it++; ! message += "\n"; ! if ( it != itEnd ) ! message += "- "; ! } ! return message.c_str(); ! } private: --- 9,56 ---- namespace CppUT { + /*! \brief Carry informative message about a failed assertion. + * \ingroup group_assertions + */ class CPPUT_API Message { public: ! static Message none; ! Message(); ! Message( const CppTL::StringBuffer &shortDescription ); ! Message( const CppTL::StringConcatenator &shortDescription ); ! Message( const CppTL::ConstString &shortDescription ); ! Message( const std::string &shortDescription ); ! Message( const char *shortDescription ); ! ! bool empty() const; void insertAt( int index, ! const char *detail ); void insertAt( int index, ! const std::string &detail ); void insertAt( int index, ! const Message &other ); ! void add( const char *detail ); // needed to solve ambiguity due to implicit constructor ! void add( const std::string &detail ); ! void add( const CppTL::ConstString &detail ); ! void extend( const Message &other ); ! int count() const; ! std::string at( int index ) const; ! std::string toString() const; private: *************** *** 121,124 **** --- 60,105 ---- + class CPPUT_API LazyMessage + { + public: + static LazyMessage none; + + LazyMessage(); + + LazyMessage( const CppTL::StringBuffer &shortDescription ); + + LazyMessage( const CppTL::StringConcatenator &shortDescription ); + + LazyMessage( const CppTL::ConstString &shortDescription ); + + LazyMessage( const std::string &shortDescription ); + + LazyMessage( const char *shortDescription ); + + LazyMessage( const Message &message ); + + Message makeMessage() const; + + private: + union { + const char *cz_; + const std::string *stdString_; + const CppTL::ConstString *constString_; + const CppTL::StringConcatenator *concatenor_; + const CppTL::StringBuffer *stringBuffer_; + const Message *message_; + } init_; + enum Kind { + defaultConstructor = 1, + constChar, + stdString, + constString, + concatenator, + buffer, + message + }; + Kind kind_; + }; + } // namespace CppUT |