summaryrefslogtreecommitdiffstats
path: root/comphelper/qa
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2011-02-14 11:22:58 +0000
committerCaolán McNamara <caolanm@redhat.com>2011-02-14 11:22:58 +0000
commit40919b309b9918ae8006ae01b74d50b990a37cab (patch)
tree67c0b3f71c99b987d420aa4f80ab5411298ecf83 /comphelper/qa
parentmove this to comphelper (diff)
downloadcore-40919b309b9918ae8006ae01b74d50b990a37cab.tar.gz
core-40919b309b9918ae8006ae01b74d50b990a37cab.zip
move this (cool) natural sort into comphelper
Diffstat (limited to 'comphelper/qa')
-rw-r--r--comphelper/qa/test_string.cxx68
1 files changed, 64 insertions, 4 deletions
diff --git a/comphelper/qa/test_string.cxx b/comphelper/qa/test_string.cxx
index 7f15e96a42f5..ab13c8814b38 100644
--- a/comphelper/qa/test_string.cxx
+++ b/comphelper/qa/test_string.cxx
@@ -42,16 +42,20 @@
namespace {
-class TestString: public CppUnit::TestFixture {
+class TestString: public CppUnit::TestFixture
+{
public:
void test();
+ void testNatural();
CPPUNIT_TEST_SUITE(TestString);
CPPUNIT_TEST(test);
+ CPPUNIT_TEST(testNatural);
CPPUNIT_TEST_SUITE_END();
};
-void TestString::test() {
+void TestString::test()
+{
rtl::OUString s1(RTL_CONSTASCII_USTRINGPARAM("foobarbar"));
sal_Int32 n1;
rtl::OUString s2(
@@ -80,10 +84,66 @@ void TestString::test() {
CPPUNIT_ASSERT(n3 == -1);
}
-CPPUNIT_TEST_SUITE_REGISTRATION(TestString);
-
+void TestString::testNatural()
+{
+ using namespace comphelper::string;
+// --- Some generic tests to ensure we do not alter original behavior
+// outside what we want
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("ABC"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("ABC")))) == 0
+ );
+ // Case sensitivity
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("ABC"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc")))) < 0
+ );
+ // Reverse
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("ABC")))) > 0
+ );
+ // First shorter
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("alongstring"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("alongerstring")))) > 0
+ );
+ // Second shorter
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("alongerstring"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("alongstring")))) < 0
+ );
+// -- Here we go on natural order, each one is followed by classic compare and the reverse comparison
+ // That's why we originally made the patch
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 9"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 10")))) < 0
+ );
+ // Original behavior
+ CPPUNIT_ASSERT(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 9"))).compareTo(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 10")))) > 0
+ );
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 10"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("Heading 9")))) > 0
+ );
+ // Harder
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 4th"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 10th")))) < 0
+ );
+ CPPUNIT_ASSERT(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 4th"))).compareTo(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 10th")))) > 0
+ );
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 10th"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("July, the 4th")))) > 0
+ );
+ // Hardest
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc08"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc010")))) < 0
+ );
+ CPPUNIT_ASSERT(
+ rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc08"))).compareTo(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc010")))) > 0
+ );
+ CPPUNIT_ASSERT(
+ compareNatural(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc010"))), rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(("abc08")))) > 0
+ );
}
+CPPUNIT_TEST_SUITE_REGISTRATION(TestString);
+}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */