Resolve ambiguity between GetClientXXX() methods in wxOSX wxComboBox.
[wxWidgets.git] / tests / xlocale / xlocale.cpp
index d5cf8007c8f3e49916694edbca64cf69c83a547a..4c6f6c8067f3148b5ee37d87e4e03eb9f54377f5 100644 (file)
@@ -39,11 +39,13 @@ public:
 private:
     CPPUNIT_TEST_SUITE( XLocaleTestCase );
         CPPUNIT_TEST( TestCtor );
 private:
     CPPUNIT_TEST_SUITE( XLocaleTestCase );
         CPPUNIT_TEST( TestCtor );
+        CPPUNIT_TEST( PreserveLocale );
         CPPUNIT_TEST( TestCtypeFunctions );
         CPPUNIT_TEST( TestStdlibFunctions );
     CPPUNIT_TEST_SUITE_END();
 
     void TestCtor();
         CPPUNIT_TEST( TestCtypeFunctions );
         CPPUNIT_TEST( TestStdlibFunctions );
     CPPUNIT_TEST_SUITE_END();
 
     void TestCtor();
+    void PreserveLocale();
     void TestCtypeFunctions();
     void TestStdlibFunctions();
 
     void TestCtypeFunctions();
     void TestStdlibFunctions();
 
@@ -56,7 +58,7 @@ private:
 // register in the unnamed registry so that these tests are run by default
 CPPUNIT_TEST_SUITE_REGISTRATION( XLocaleTestCase );
 
 // register in the unnamed registry so that these tests are run by default
 CPPUNIT_TEST_SUITE_REGISTRATION( XLocaleTestCase );
 
-// 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( XLocaleTestCase, "XLocaleTestCase" );
 
 
 CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( XLocaleTestCase, "XLocaleTestCase" );
 
 
@@ -81,6 +83,16 @@ void XLocaleTestCase::TestCtor()
 #endif
 }
 
 #endif
 }
 
+void XLocaleTestCase::PreserveLocale()
+{
+    // Test that using locale functions doesn't change the global C locale.
+    const wxString origLocale(setlocale(LC_ALL, NULL));
+
+    wxStrtod_l(wxT("1.234"), NULL, wxCLocale);
+
+    CPPUNIT_ASSERT_EQUAL( origLocale, setlocale(LC_ALL, NULL) );
+}
+
 // test the ctype functions with the given locale
 void XLocaleTestCase::TestCtypeFunctionsWith(const wxXLocale& loc)
 {
 // test the ctype functions with the given locale
 void XLocaleTestCase::TestCtypeFunctionsWith(const wxXLocale& loc)
 {
@@ -202,12 +214,12 @@ void XLocaleTestCase::TestStdlibFunctionsWith(const wxXLocale& loc)
     CPPUNIT_ASSERT_EQUAL( 0x60c0c0,   wxStrtol_l(endptr, &endptr, 16, loc) );
     CPPUNIT_ASSERT_EQUAL( -0x374D20,  wxStrtol_l(endptr, &endptr, 2, loc) );
     CPPUNIT_ASSERT_EQUAL( 0x6fffff,   wxStrtol_l(endptr, NULL, 0, loc) );
     CPPUNIT_ASSERT_EQUAL( 0x60c0c0,   wxStrtol_l(endptr, &endptr, 16, loc) );
     CPPUNIT_ASSERT_EQUAL( -0x374D20,  wxStrtol_l(endptr, &endptr, 2, loc) );
     CPPUNIT_ASSERT_EQUAL( 0x6fffff,   wxStrtol_l(endptr, NULL, 0, loc) );
-    
+
     // strtoul
     // strtoul
-    // NOTE: 3147483647 and 0x12A05F200 are greater than LONG_MAX (on 32bit machines) but
+    // NOTE: 3147483647 and 0xEE6B2800 are greater than LONG_MAX (on 32bit machines) but
     //       smaller than ULONG_MAX
     //       smaller than ULONG_MAX
-    CPPUNIT_ASSERT_EQUAL( (unsigned long)3147483647,  wxStrtoul_l(wxT("3147483647"), NULL, 0, loc) );
-    CPPUNIT_ASSERT_EQUAL( (unsigned long)0x12A05F200, wxStrtoul_l(wxT("0x12A05F200"), NULL, 0, loc) );
+    CPPUNIT_ASSERT_EQUAL( 3147483647ul,  wxStrtoul_l(wxT("3147483647"), NULL, 0, loc) );
+    CPPUNIT_ASSERT_EQUAL( 0xEE6B2800ul, wxStrtoul_l(wxT("0xEE6B2800"), NULL, 0, loc) );
 
     // TODO: test for "failure" behaviour of the functions above
 }
 
     // TODO: test for "failure" behaviour of the functions above
 }
@@ -246,7 +258,7 @@ void XLocaleTestCase::TestCtypeFunctions()
     CPPUNIT_ASSERT( locIT.IsOk() ); // doesn't make sense to continue otherwise
 
     TestCtypeFunctionsWith(locIT);
     CPPUNIT_ASSERT( locIT.IsOk() ); // doesn't make sense to continue otherwise
 
     TestCtypeFunctionsWith(locIT);
-    
+
     CPPUNIT_ASSERT( wxIsalpha_l(wxT('\xe1'), locIT) );
     CPPUNIT_ASSERT( wxIslower_l(wxT('\xe1'), locIT) );
 #endif
     CPPUNIT_ASSERT( wxIsalpha_l(wxT('\xe1'), locIT) );
     CPPUNIT_ASSERT( wxIslower_l(wxT('\xe1'), locIT) );
 #endif
@@ -284,11 +296,11 @@ void XLocaleTestCase::TestStdlibFunctions()
 
     // comma as decimal point:
     CPPUNIT_ASSERT_EQUAL( 1.234, wxStrtod_l(wxT("1,234"), NULL, locFR) );
 
     // comma as decimal point:
     CPPUNIT_ASSERT_EQUAL( 1.234, wxStrtod_l(wxT("1,234"), NULL, locFR) );
-    
+
     // space as thousands separator is not recognized by wxStrtod_l():
     CPPUNIT_ASSERT( 1234.5 != wxStrtod_l(wxT("1 234,5"), NULL, locFR) );
     // space as thousands separator is not recognized by wxStrtod_l():
     CPPUNIT_ASSERT( 1234.5 != wxStrtod_l(wxT("1 234,5"), NULL, locFR) );
-    
-    
+
+
     // italian
 
     if (!wxLocale::IsAvailable(wxLANGUAGE_ITALIAN))
     // italian
 
     if (!wxLocale::IsAvailable(wxLANGUAGE_ITALIAN))
@@ -301,7 +313,7 @@ void XLocaleTestCase::TestStdlibFunctions()
 
     // comma as decimal point:
     CPPUNIT_ASSERT_EQUAL( 1.234, wxStrtod_l(wxT("1,234"), NULL, locIT) );
 
     // comma as decimal point:
     CPPUNIT_ASSERT_EQUAL( 1.234, wxStrtod_l(wxT("1,234"), NULL, locIT) );
-    
+
     // dot as thousands separator is not recognized by wxStrtod_l():
     CPPUNIT_ASSERT( 1234.5 != wxStrtod_l(wxT("1.234,5"), NULL, locIT) );
 #endif
     // dot as thousands separator is not recognized by wxStrtod_l():
     CPPUNIT_ASSERT( 1234.5 != wxStrtod_l(wxT("1.234,5"), NULL, locIT) );
 #endif