]> git.saurik.com Git - wxWidgets.git/blobdiff - tests/arrays/arrays.cpp
Eliminate a warning
[wxWidgets.git] / tests / arrays / arrays.cpp
index 8d05e0ca8dae15ec965aa2fbdc60939ba7df104c..972abe40f0fe1422e70b94d1a28d7c9efecb78eb 100644 (file)
@@ -82,7 +82,7 @@ public:
 
    static size_t GetNumber() { return ms_bars; }
 
-   const wxChar *GetName() const { return m_name; }
+   const wxChar *GetName() const { return m_name.c_str(); }
 
 private:
    wxString m_name;
@@ -139,6 +139,15 @@ WX_DEFINE_SORTED_ARRAY_CMP_SHORT(ushort, UShortCompareValues, wxSortedArrayUShor
 
 WX_DEFINE_SORTED_ARRAY_CMP_INT(int, IntCompareValues, wxSortedArrayInt);
 
+struct Item
+{
+    Item(int n_ = 0) : n(n_) { }
+
+    int n;
+};
+
+WX_DEFINE_ARRAY_PTR(Item *, ItemPtrArray);
+
 // ----------------------------------------------------------------------------
 // test class
 // ----------------------------------------------------------------------------
@@ -161,6 +170,7 @@ private:
         CPPUNIT_TEST( wxArrayCharTest );
         CPPUNIT_TEST( TestSTL );
         CPPUNIT_TEST( Alloc );
+        CPPUNIT_TEST( Swap );
     CPPUNIT_TEST_SUITE_END();
 
     void wxStringArrayTest();
@@ -173,6 +183,7 @@ private:
     void wxArrayCharTest();
     void TestSTL();
     void Alloc();
+    void Swap();
 
     DECLARE_NO_COPY_CLASS(ArraysTestCase)
 };
@@ -424,7 +435,8 @@ void ArraysTestCase::wxStringArraySplitJoinTest()
                    wxT("<title>Initial page of Mozilla Firefox</title>")
                    wxT("</meta></head></html>");
 
-    for (size_t i=0; i < WXSIZEOF(separators); i++)
+    size_t i;
+    for (i = 0; i < WXSIZEOF(separators); i++)
     {
         wxArrayString arr = wxSplit(str, separators[i]);
         CPPUNIT_ASSERT( str == wxJoin(arr, separators[i]) );
@@ -441,7 +453,7 @@ void ArraysTestCase::wxStringArraySplitJoinTest()
         };
     wxArrayString theArr(WXSIZEOF(arr), arr);
 
-    for (size_t i=0; i < WXSIZEOF(separators); i++)
+    for (i = 0; i < WXSIZEOF(separators); i++)
     {
         wxString string = wxJoin(theArr, separators[i]);
         CPPUNIT_ASSERT( theArr == wxSplit(string, separators[i]) );
@@ -545,6 +557,44 @@ void ArraysTestCase::Alloc()
     CPPUNIT_ASSERT_EQUAL( 9, a[1] );
 }
 
+namespace
+{
+
+template <typename A, typename T>
+void DoTestSwap(T v1, T v2, T v3,
+                A * WXUNUSED(dummyUglyVC6Workaround))
+{
+    A a1, a2;
+    a1.swap(a2);
+    CPPUNIT_ASSERT( a1.empty() && a2.empty() );
+
+    a1.push_back(v1);
+    a1.swap(a2);
+    CPPUNIT_ASSERT( a1.empty() );
+    CPPUNIT_ASSERT_EQUAL( 1, a2.size() );
+
+    a1.push_back(v2);
+    a1.push_back(v3);
+    a2.swap(a1);
+    CPPUNIT_ASSERT_EQUAL( 1, a1.size() );
+    CPPUNIT_ASSERT_EQUAL( 2, a2.size() );
+    CPPUNIT_ASSERT_EQUAL( v1, a1[0] );
+    CPPUNIT_ASSERT_EQUAL( v3, a2[1] );
+
+    a1.swap(a2);
+    CPPUNIT_ASSERT_EQUAL( 2, a1.size() );
+    CPPUNIT_ASSERT_EQUAL( 1, a2.size() );
+}
+
+} // anonymous namespace
+
+void ArraysTestCase::Swap()
+{
+    DoTestSwap("Foo", "Bar", "Baz", (wxArrayString *)NULL);
+    DoTestSwap(1, 10, 100, (wxArrayInt *)NULL);
+    DoTestSwap(6, 28, 496, (wxArrayLong *)NULL);
+}
+
 void ArraysTestCase::TestSTL()
 {
     wxArrayInt list1;
@@ -593,4 +643,10 @@ void ArraysTestCase::TestSTL()
     {
         CPPUNIT_ASSERT( *it == i );
     }
+
+
+    ItemPtrArray items;
+    items.push_back(new Item(17));
+    CPPUNIT_ASSERT_EQUAL( 17, (*(items.rbegin()))->n );
+    CPPUNIT_ASSERT_EQUAL( 17, (**items.begin()).n );
 }