X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1a39b0131f93b24c1fb89668170b212430a42c3a..a5655d37db9baabce654849fd66173f95f74e230:/tests/strings/strings.cpp diff --git a/tests/strings/strings.cpp b/tests/strings/strings.cpp index d27644b565..b613cb65b0 100644 --- a/tests/strings/strings.cpp +++ b/tests/strings/strings.cpp @@ -53,6 +53,7 @@ private: CPPUNIT_TEST( ToULongLong ); #endif // wxLongLong_t CPPUNIT_TEST( ToDouble ); + CPPUNIT_TEST( FromDouble ); CPPUNIT_TEST( StringBuf ); CPPUNIT_TEST( UTF8Buf ); CPPUNIT_TEST( CStrDataTernaryOperator ); @@ -85,6 +86,7 @@ private: void ToULongLong(); #endif // wxLongLong_t void ToDouble(); + void FromDouble(); void StringBuf(); void UTF8Buf(); void CStrDataTernaryOperator(); @@ -747,6 +749,48 @@ void StringTestCase::ToDouble() } } +void StringTestCase::FromDouble() +{ + static const struct FromDoubleTestData + { + double value; + const char *str; + } testData[] = + { + { 1.23, "1.23" }, + // NB: there are no standards about the minimum exponent width + // and newer MSVC versions use 3 digits as minimum exponent + // width while GNU libc uses 2 digits as minimum width... +#ifdef __VISUALC__ + { -3e-10, "-3e-010" }, +#else + { -3e-10, "-3e-10" }, +#endif + { -0.45678, "-0.45678" }, + }; + + for ( unsigned n = 0; n < WXSIZEOF(testData); n++ ) + { + const FromDoubleTestData& td = testData[n]; + CPPUNIT_ASSERT_EQUAL( td.str, wxString::FromCDouble(td.value) ); + } + + if ( !wxLocale::IsAvailable(wxLANGUAGE_FRENCH) ) + return; + + wxLocale locale; + CPPUNIT_ASSERT( locale.Init(wxLANGUAGE_FRENCH, wxLOCALE_DONT_LOAD_DEFAULT) ); + + for ( unsigned m = 0; m < WXSIZEOF(testData); m++ ) + { + const FromDoubleTestData& td = testData[m]; + + wxString str(td.str); + str.Replace(".", ","); + CPPUNIT_ASSERT_EQUAL( str, wxString::FromDouble(td.value) ); + } +} + void StringTestCase::StringBuf() { // check that buffer can be used to write into the string