]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/strings/strings.cpp
minor demo tweaks
[wxWidgets.git] / tests / strings / strings.cpp
index 317cf08a7514f93d3473737607ec096a986f9e78..85e91dad86910b4af75946580a99db78c86cb9bb 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)
 };
@@ -461,18 +463,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 +513,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 +529,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 +547,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 +563,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 +604,29 @@ 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(3u, s.length());
+
+    {
+        wxChar *p = s.GetWriteBuf(10);
+        wxStrcpy(p, _T("barrbaz"));
+        s.UngetWriteBuf(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(4u, s.length());
+
+        CPPUNIT_ASSERT_EQUAL( 0, wxStrcmp(_T("barr"), s) );
+    }
+}
+