Add functions for sorting strings in natural sort order
Use StrCmpLogicalW() under MSW and generic implementation under the other platforms. See https://github.com/wxWidgets/wxWidgets/pull/780
This commit is contained in:
committed by
Vadim Zeitlin
parent
a2e4e6ebcf
commit
371c4b1366
@@ -780,3 +780,49 @@ void ArraysTestCase::IndexFromEnd()
|
||||
CPPUNIT_ASSERT_EQUAL( 1, a.Index(1, /*bFromEnd=*/true) );
|
||||
CPPUNIT_ASSERT_EQUAL( 2, a.Index(42, /*bFromEnd=*/true) );
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("wxNaturalStringSortAscending()", "[array][sort][string]")
|
||||
{
|
||||
wxString s01("3String");
|
||||
wxString s02("21String");
|
||||
|
||||
wxString s03("100string");
|
||||
wxString s04("100String");
|
||||
|
||||
wxString s05("10String");
|
||||
wxString s06("Str3ing");
|
||||
wxString s07("Str20ing");
|
||||
wxString s08("Str200ing");
|
||||
wxString s09("String8");
|
||||
wxString s10("String90");
|
||||
|
||||
wxString s11("7String3");
|
||||
wxString s12("07String20");
|
||||
wxString s13("007String100");
|
||||
|
||||
CHECK(wxCmpNatural(s01, s02) < 0);
|
||||
CHECK(wxCmpNatural(s02, s03) < 0);
|
||||
CHECK(wxCmpNatural(s03, s04) == 0); // Check that case is ignored
|
||||
CHECK(wxCmpNatural(s05, s06) < 0);
|
||||
CHECK(wxCmpNatural(s06, s07) < 0);
|
||||
CHECK(wxCmpNatural(s07, s08) < 0);
|
||||
CHECK(wxCmpNatural(s08, s09) < 0);
|
||||
CHECK(wxCmpNatural(s09, s10) < 0);
|
||||
CHECK(wxCmpNatural(s11, s12) < 0);
|
||||
CHECK(wxCmpNatural(s12, s13) < 0);
|
||||
CHECK(wxCmpNatural(s01, s01) == 0); // Check that equality works in all cases
|
||||
CHECK(wxCmpNatural(s02, s02) == 0);
|
||||
CHECK(wxCmpNatural(s03, s03) == 0);
|
||||
CHECK(wxCmpNatural(s04, s04) == 0);
|
||||
CHECK(wxCmpNatural(s05, s05) == 0);
|
||||
CHECK(wxCmpNatural(s06, s06) == 0);
|
||||
CHECK(wxCmpNatural(s07, s07) == 0);
|
||||
CHECK(wxCmpNatural(s08, s08) == 0);
|
||||
CHECK(wxCmpNatural(s09, s09) == 0);
|
||||
CHECK(wxCmpNatural(s10, s10) == 0);
|
||||
CHECK(wxCmpNatural(s11, s11) == 0);
|
||||
CHECK(wxCmpNatural(s12, s12) == 0);
|
||||
CHECK(wxCmpNatural(s13, s13) == 0);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user