Re-define push_back() in wxSortedArrayString to behave correctly.
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
This commit is contained in:
parent
ceb9b8db81
commit
0287ae5c75
@ -546,6 +546,8 @@ public: \
|
||||
\
|
||||
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); } \
|
||||
|
@ -160,6 +160,7 @@ public:
|
||||
private:
|
||||
CPPUNIT_TEST_SUITE( ArraysTestCase );
|
||||
CPPUNIT_TEST( wxStringArrayTest );
|
||||
CPPUNIT_TEST( SortedArray );
|
||||
CPPUNIT_TEST( wxStringArraySplitTest );
|
||||
CPPUNIT_TEST( wxStringArrayJoinTest );
|
||||
CPPUNIT_TEST( wxStringArraySplitJoinTest );
|
||||
@ -175,6 +176,7 @@ private:
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
|
||||
void wxStringArrayTest();
|
||||
void SortedArray();
|
||||
void wxStringArraySplitTest();
|
||||
void wxStringArrayJoinTest();
|
||||
void wxStringArraySplitJoinTest();
|
||||
@ -340,6 +342,18 @@ void ArraysTestCase::wxStringArrayTest()
|
||||
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:
|
||||
|
Loading…
Reference in New Issue
Block a user