#ifndef __TRAITSTEST_H #define __TRAITSTEST_H // // This example shows how to use TS_ASSERT_EQUALS for your own classes // #include #include // // Define your class with operator== // #include #include class Pet { char _name[128]; public: Pet( const char *petName ) { strcpy( _name, petName ); } const char *name() const { return _name; } bool operator== ( const Pet &other ) const { return !strcmp( name(), other.name() ); } }; // // Instantiate CxxTest::ValueTraits<*your class*> // Note: Most compilers do not require that you define both // ValueTraits and ValueTraits, but some do. // namespace CxxTest { CXXTEST_TEMPLATE_INSTANTIATION class ValueTraits { char _asString[256]; public: ValueTraits( const Pet &pet ) { sprintf( _asString, "Pet(\"%s\")", pet.name() ); } const char *asString() const { return _asString; } }; CXXTEST_COPY_CONST_TRAITS( Pet ); } // // Here's how it works // class TestFunky : public CxxTest::TestSuite { public: void testPets() { Pet pet1("dog"), pet2("cat"); TS_ASSERT_EQUALS( pet1, pet2 ); Pet cat("cat"), gato("cat"); TS_ASSERT_DIFFERS( cat, gato ); #ifdef _CXXTEST_HAVE_STD typedef CXXTEST_STD(string) String; TS_ASSERT_EQUALS( String("Hello"), String("World!") ); #endif // _CXXTEST_HAVE_STD } }; #endif // __TRAITSTEST_H