Adding items to wxSortedArrayString should always keep them sorted but while
Add() did this, push_back() didn't breaking the class invariant.
Redefine push_back() in _WX_DEFINE_SORTED_TYPEARRAY_2 macro to fix this and
add a unit test checking that wxSortedArrayString::push_back() does work now.
Closes #13134.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67429
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
\
size_t Add(T lItem) \
{ return base::Add(lItem, (CMPFUNC)m_fnCompare); } \
\
size_t Add(T lItem) \
{ return base::Add(lItem, (CMPFUNC)m_fnCompare); } \
+ void push_back(T lItem) \
+ { Add(lItem); } \
\
void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
{ base::erase(begin() + uiIndex, begin() + uiIndex + nRemove); } \
\
void RemoveAt(size_t uiIndex, size_t nRemove = 1) \
{ base::erase(begin() + uiIndex, begin() + uiIndex + nRemove); } \
private:
CPPUNIT_TEST_SUITE( ArraysTestCase );
CPPUNIT_TEST( wxStringArrayTest );
private:
CPPUNIT_TEST_SUITE( ArraysTestCase );
CPPUNIT_TEST( wxStringArrayTest );
+ CPPUNIT_TEST( SortedArray );
CPPUNIT_TEST( wxStringArraySplitTest );
CPPUNIT_TEST( wxStringArrayJoinTest );
CPPUNIT_TEST( wxStringArraySplitJoinTest );
CPPUNIT_TEST( wxStringArraySplitTest );
CPPUNIT_TEST( wxStringArrayJoinTest );
CPPUNIT_TEST( wxStringArraySplitJoinTest );
CPPUNIT_TEST_SUITE_END();
void wxStringArrayTest();
CPPUNIT_TEST_SUITE_END();
void wxStringArrayTest();
void wxStringArraySplitTest();
void wxStringArrayJoinTest();
void wxStringArraySplitJoinTest();
void wxStringArraySplitTest();
void wxStringArrayJoinTest();
void wxStringArraySplitJoinTest();
CPPUNIT_ASSERT_EQUAL( "Foo", a5[2] );
}
CPPUNIT_ASSERT_EQUAL( "Foo", a5[2] );
}
+void ArraysTestCase::SortedArray()
+{
+ wxSortedArrayString a;
+ a.Add("d");
+ a.Add("c");
+ CPPUNIT_ASSERT_EQUAL( 0, a.Index("c") );
+
+ a.push_back("b");
+ a.push_back("a");
+ CPPUNIT_ASSERT_EQUAL( 0, a.Index("a") );
+}
+
void ArraysTestCase::wxStringArraySplitTest()
{
// test wxSplit:
void ArraysTestCase::wxStringArraySplitTest()
{
// test wxSplit: