]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/strings/strings.cpp
don't really enable the window when its parent is disabled, just remember to do it...
[wxWidgets.git] / tests / strings / strings.cpp
index 317cf08a7514f93d3473737607ec096a986f9e78..fac42532758fedd7a30017cf5c47d7a1712ec131 100644 (file)
@@ -52,6 +52,7 @@ private:
         CPPUNIT_TEST( ToULongLong );
 #endif // wxLongLong_t
         CPPUNIT_TEST( ToDouble );
+        CPPUNIT_TEST( WriteBuf );
     CPPUNIT_TEST_SUITE_END();
 
     void String();
@@ -74,6 +75,7 @@ private:
     void ToULongLong();
 #endif // wxLongLong_t
     void ToDouble();
+    void WriteBuf();
 
     DECLARE_NO_COPY_CLASS(StringTestCase)
 };
@@ -353,6 +355,26 @@ void StringTestCase::Compare()
     CPPUNIT_ASSERT( s1 != neq3 );
     CPPUNIT_ASSERT( s1 != neq4 );
 
+    CPPUNIT_ASSERT( s1 == wxT("AHH") );
+    CPPUNIT_ASSERT( s1 != wxT("no") );
+    CPPUNIT_ASSERT( s1 < wxT("AZ") );
+    CPPUNIT_ASSERT( s1 <= wxT("AZ") );
+    CPPUNIT_ASSERT( s1 <= wxT("AHH") );
+    CPPUNIT_ASSERT( s1 > wxT("AA") );
+    CPPUNIT_ASSERT( s1 >= wxT("AA") );
+    CPPUNIT_ASSERT( s1 >= wxT("AHH") );
+
+    // test comparison with C strings in Unicode build (must work in ANSI as
+    // well, of course):
+    CPPUNIT_ASSERT( s1 == "AHH" );
+    CPPUNIT_ASSERT( s1 != "no" );
+    CPPUNIT_ASSERT( s1 < "AZ" );
+    CPPUNIT_ASSERT( s1 <= "AZ" );
+    CPPUNIT_ASSERT( s1 <= "AHH" );
+    CPPUNIT_ASSERT( s1 > "AA" );
+    CPPUNIT_ASSERT( s1 >= "AA" );
+    CPPUNIT_ASSERT( s1 >= "AHH" );
+
 //    wxString _s1 = wxT("A\0HH");
 //    wxString _eq = wxT("A\0HH");
 //    wxString _neq1 = wxT("H\0AH");
@@ -461,18 +483,20 @@ enum
 static const struct ToLongData
 {
     const wxChar *str;
-    union
-    {
 #ifdef wxLongLong_t
-        wxLongLong_t llvalue;
-        wxULongLong_t ullvalue;
+    wxLongLong_t value;
+#else
+    long value;
 #endif // wxLongLong_t
-        long lvalue;
-        unsigned long ulvalue;
-    };
-
     int flags;
 
+    long LValue() const { return value; }
+    unsigned long ULValue() const { return value; }
+#ifdef wxLongLong_t
+    wxLongLong_t LLValue() const { return value; }
+    wxULongLong_t ULLValue() const { return (wxULongLong_t)value; }
+#endif // wxLongLong_t
+
     bool IsOk() const { return !(flags & Number_Invalid); }
 } longData[] =
 {
@@ -509,7 +533,7 @@ void StringTestCase::ToLong()
 
         CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToLong(&l) );
         if ( ld.IsOk() )
-            CPPUNIT_ASSERT_EQUAL( ld.lvalue, l );
+            CPPUNIT_ASSERT_EQUAL( ld.LValue(), l );
     }
 }
 
@@ -525,7 +549,7 @@ void StringTestCase::ToULong()
 
         CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToULong(&ul) );
         if ( ld.IsOk() )
-            CPPUNIT_ASSERT_EQUAL( ld.ulvalue, ul );
+            CPPUNIT_ASSERT_EQUAL( ld.ULValue(), ul );
     }
 }
 
@@ -543,7 +567,7 @@ void StringTestCase::ToLongLong()
 
         CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToLongLong(&l) );
         if ( ld.IsOk() )
-            CPPUNIT_ASSERT_EQUAL( ld.llvalue, l );
+            CPPUNIT_ASSERT_EQUAL( ld.LLValue(), l );
     }
 }
 
@@ -559,7 +583,7 @@ void StringTestCase::ToULongLong()
 
         CPPUNIT_ASSERT_EQUAL( ld.IsOk(), wxString(ld.str).ToULongLong(&ul) );
         if ( ld.IsOk() )
-            CPPUNIT_ASSERT_EQUAL( ld.ullvalue, ul );
+            CPPUNIT_ASSERT_EQUAL( ld.ULLValue(), ul );
     }
 }
 
@@ -600,3 +624,30 @@ void StringTestCase::ToDouble()
             CPPUNIT_ASSERT_EQUAL( ld.value, d );
     }
 }
+
+void StringTestCase::WriteBuf()
+{
+    wxString s;
+    wxStrcpy(wxStringBuffer(s, 10), _T("foo"));
+
+    CPPUNIT_ASSERT_EQUAL(_T('f'), s[0u]);
+    CPPUNIT_ASSERT_EQUAL(_T('o'), s[1]);
+    CPPUNIT_ASSERT_EQUAL(_T('o'), s[2]);
+    CPPUNIT_ASSERT_EQUAL((size_t)3, s.length());
+
+
+    {
+        wxStringBufferLength buf(s, 10);
+        wxStrcpy(buf, _T("barrbaz"));
+        buf.SetLength(4);
+    }
+
+    CPPUNIT_ASSERT_EQUAL(_T('b'), s[0u]);
+    CPPUNIT_ASSERT_EQUAL(_T('a'), s[1]);
+    CPPUNIT_ASSERT_EQUAL(_T('r'), s[2]);
+    CPPUNIT_ASSERT_EQUAL(_T('r'), s[3]);
+    CPPUNIT_ASSERT_EQUAL((size_t)4, s.length());
+
+    CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) );
+}
+