CPPUNIT_TEST( Format );
CPPUNIT_TEST( Constructors );
CPPUNIT_TEST( Extraction );
+ CPPUNIT_TEST( Trim );
CPPUNIT_TEST( Find );
CPPUNIT_TEST( Replace );
CPPUNIT_TEST( Match );
CPPUNIT_TEST( CaseChanges );
CPPUNIT_TEST( Compare );
CPPUNIT_TEST( CompareNoCase );
+ CPPUNIT_TEST( Contains );
CPPUNIT_TEST( ToLong );
CPPUNIT_TEST( ToULong );
CPPUNIT_TEST( ToDouble );
void Format();
void Constructors();
void Extraction();
+ void Trim();
void Find();
void Replace();
void Match();
void CaseChanges();
void Compare();
void CompareNoCase();
+ void Contains();
void ToLong();
void ToULong();
void ToDouble();
wxString rest;
- #define TEST_STARTS_WITH( prefix , correct_rest, result ) \
- CPPUNIT_ASSERT( \
- ( s.StartsWith( prefix, &rest ) == result ) && \
- ( ( result == false ) || ( wxStrcmp( correct_rest , rest ) == 0 ) ) \
- )
+ #define TEST_STARTS_WITH(prefix, correct_rest, result) \
+ CPPUNIT_ASSERT_EQUAL(result, s.StartsWith(prefix, &rest)); \
+ if ( result ) \
+ CPPUNIT_ASSERT_EQUAL(wxString(correct_rest), rest)
TEST_STARTS_WITH( _T("Hello"), _T(", world!"), true );
TEST_STARTS_WITH( _T("Hello, "), _T("world!"), true );
TEST_STARTS_WITH( _T("Hi"), _T(""), false );
#undef TEST_STARTS_WITH
+
+ #define TEST_ENDS_WITH(suffix, correct_rest, result) \
+ CPPUNIT_ASSERT_EQUAL(result, s.EndsWith(suffix, &rest)); \
+ if ( result ) \
+ CPPUNIT_ASSERT_EQUAL(wxString(correct_rest), rest)
+
+ TEST_ENDS_WITH( _T(""), _T("Hello, world!"), true );
+ TEST_ENDS_WITH( _T("!"), _T("Hello, world"), true );
+ TEST_ENDS_WITH( _T(", world!"), _T("Hello"), true );
+ TEST_ENDS_WITH( _T("ello, world!"), _T("H"), true );
+ TEST_ENDS_WITH( _T("Hello, world!"), _T(""), true );
+ TEST_ENDS_WITH( _T("very long string"), _T(""), false );
+ TEST_ENDS_WITH( _T("?"), _T(""), false );
+ TEST_ENDS_WITH( _T("Hello, world"), _T(""), false );
+ TEST_ENDS_WITH( _T("Gello, world!"), _T(""), false );
+
+ #undef TEST_ENDS_WITH
+}
+
+void StringTestCase::Trim()
+{
+ #define TEST_TRIM( str , dir , result ) \
+ CPPUNIT_ASSERT( wxString(str).Trim(dir) == result )
+
+ TEST_TRIM( _T(" Test "), true, _T(" Test") );
+ TEST_TRIM( _T(" "), true, _T("") );
+ TEST_TRIM( _T(" "), true, _T("") );
+ TEST_TRIM( _T(""), true, _T("") );
+
+ TEST_TRIM( _T(" Test "), false, _T("Test ") );
+ TEST_TRIM( _T(" "), false, _T("") );
+ TEST_TRIM( _T(" "), false, _T("") );
+ TEST_TRIM( _T(""), false, _T("") );
+
+ #undef TEST_TRIM
}
void StringTestCase::Find()
CPPUNIT_CNCNEQ_ASSERT( s1, neq3 );
}
+void StringTestCase::Contains()
+{
+ static const struct ContainsData
+ {
+ const wxChar *hay;
+ const wxChar *needle;
+ bool contains;
+ } containsData[] =
+ {
+ { _T(""), _T(""), true },
+ { _T(""), _T("foo"), false },
+ { _T("foo"), _T(""), true },
+ { _T("foo"), _T("f"), true },
+ { _T("foo"), _T("o"), true },
+ { _T("foo"), _T("oo"), true },
+ { _T("foo"), _T("ooo"), false },
+ { _T("foo"), _T("oooo"), false },
+ { _T("foo"), _T("fooo"), false },
+ };
+
+ for ( size_t n = 0; n < WXSIZEOF(containsData); n++ )
+ {
+ const ContainsData& cd = containsData[n];
+ CPPUNIT_ASSERT_EQUAL( cd.contains, wxString(cd.hay).Contains(cd.needle) );
+ }
+}
+
void StringTestCase::ToLong()
{
- long l;
static const struct ToLongData
{
const wxChar *str;
{ _T("--1"), 0, false },
};
- size_t n;
- for ( n = 0; n < WXSIZEOF(longData); n++ )
+ long l;
+ for ( size_t n = 0; n < WXSIZEOF(longData); n++ )
{
const ToLongData& ld = longData[n];
CPPUNIT_ASSERT_EQUAL( ld.ok, wxString(ld.str).ToLong(&l) );