private:
CPPUNIT_TEST_SUITE( CrtTestCase );
CPPUNIT_TEST( SetGetEnv );
+#if wxUSE_UNICODE
+ CPPUNIT_TEST( Strchr );
+#endif // wxUSE_UNICODE
CPPUNIT_TEST( Strcmp );
CPPUNIT_TEST( Strspn );
CPPUNIT_TEST( Strcspn );
CPPUNIT_TEST_SUITE_END();
void SetGetEnv();
+#if wxUSE_UNICODE
+ void Strchr();
+#endif // wxUSE_UNICODE
void Strcmp();
void Strspn();
void Strcspn();
// register in the unnamed registry so that these tests are run by default
CPPUNIT_TEST_SUITE_REGISTRATION( CrtTestCase );
-// also include in it's own registry so that these tests can be run alone
+// also include in its own registry so that these tests can be run alone
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( CrtTestCase, "CrtTestCase" );
void CrtTestCase::SetGetEnv()
{
+#define TESTVAR_NAME wxT("WXTESTVAR")
+
wxString val;
- wxSetEnv(_T("TESTVAR"), _T("value"));
- CPPUNIT_ASSERT( wxGetEnv(_T("TESTVAR"), &val) == true );
- CPPUNIT_ASSERT( val == _T("value") );
- wxSetEnv(_T("TESTVAR"), _T("something else"));
- CPPUNIT_ASSERT( wxGetEnv(_T("TESTVAR"), &val) );
- CPPUNIT_ASSERT( val == _T("something else") );
- CPPUNIT_ASSERT( wxUnsetEnv(_T("TESTVAR")) );
- CPPUNIT_ASSERT( wxGetEnv(_T("TESTVAR"), NULL) == false );
+ wxSetEnv(TESTVAR_NAME, wxT("value"));
+ CPPUNIT_ASSERT( wxGetEnv(TESTVAR_NAME, &val) );
+ CPPUNIT_ASSERT_EQUAL( "value", val );
+ CPPUNIT_ASSERT_EQUAL( "value", wxString(wxGetenv(TESTVAR_NAME)) );
+
+ wxSetEnv(TESTVAR_NAME, wxT("something else"));
+ CPPUNIT_ASSERT( wxGetEnv(TESTVAR_NAME, &val) );
+ CPPUNIT_ASSERT_EQUAL( "something else", val );
+ CPPUNIT_ASSERT_EQUAL( "something else", wxString(wxGetenv(TESTVAR_NAME)) );
+
+ CPPUNIT_ASSERT( wxUnsetEnv(TESTVAR_NAME) );
+ CPPUNIT_ASSERT( !wxGetEnv(TESTVAR_NAME, NULL) );
+ CPPUNIT_ASSERT( !wxGetenv(TESTVAR_NAME) );
+
+#undef TESTVAR_NAME
+}
+
+#if wxUSE_UNICODE
+void CrtTestCase::Strchr()
+{
+ // test that searching for a wide character in a narrow string simply
+ // doesn't find it but doesn't fail with an assert (#11487)
+ const wxUniChar smiley = *wxString::FromUTF8("\xe2\x98\xba").begin();
+
+ CPPUNIT_ASSERT( !wxStrchr("hello", smiley) );
+
+ // but searching for an explicitly wide character does find it
+ CPPUNIT_ASSERT( wxStrchr(wxString::FromUTF8(":-) == \xe2\x98\xba"),
+ static_cast<wchar_t>(smiley)) );
}
+#endif // wxUSE_UNICODE
void CrtTestCase::Strcmp()
{
CPPUNIT_ASSERT_EQUAL( ',', *wxStrpbrk(strWX.c_str(), s.mb_str()) );
CPPUNIT_ASSERT_EQUAL( L',', *wxStrpbrk(strWX.c_str(), s.wc_str()) );
- CPPUNIT_ASSERT_EQUAL( (char *)NULL, wxStrpbrk(strWX, "xyz") );
- CPPUNIT_ASSERT_EQUAL( (wchar_t *)NULL, wxStrpbrk(strWX.c_str(), L"xyz") );
+ CPPUNIT_ASSERT( !wxStrpbrk(strWX, "xyz") );
+ CPPUNIT_ASSERT( !wxStrpbrk(strWX.c_str(), L"xyz") );
}
void CrtTestCase::Strnlen()