File indexing completed on 2024-04-21 14:55:20
0001 /* This file is part of the KDE libraries 0002 * Copyright (C) 1999 Ian Zepp (icszepp@islc.net) 0003 * Copyright (C) 2006 by Dominic Battre <dominic@battre.de> 0004 * Copyright (C) 2006 by Martin Pool <mbp@canonical.com> 0005 * 0006 * This library is free software; you can redistribute it and/or 0007 * modify it under the terms of the GNU Library General Public 0008 * License as published by the Free Software Foundation; either 0009 * version 2 of the License, or (at your option) any later version. 0010 * 0011 * This library is distributed in the hope that it will be useful, 0012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 0014 * Library General Public License for more details. 0015 * 0016 * You should have received a copy of the GNU Library General Public License 0017 * along with this library; see the file COPYING.LIB. If not, write to 0018 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 0019 * Boston, MA 02110-1301, USA. 0020 */ 0021 0022 #include "kdecore/kstringhandler_deprecated.h" 0023 #include <QTest> 0024 0025 class NaturalCompareTest : public QObject 0026 { 0027 Q_OBJECT 0028 0029 private Q_SLOTS: 0030 void naturalCompare(); 0031 }; 0032 0033 QTEST_MAIN(NaturalCompareTest) 0034 0035 void NaturalCompareTest::naturalCompare() 0036 { 0037 QCOMPARE(KStringHandler::naturalCompare("a", "b", Qt::CaseSensitive), -1); 0038 QCOMPARE(KStringHandler::naturalCompare("b", "a", Qt::CaseSensitive), +1); 0039 QCOMPARE(KStringHandler::naturalCompare("a", "a", Qt::CaseSensitive), 0); 0040 0041 QCOMPARE(KStringHandler::naturalCompare("A", "a", Qt::CaseSensitive), QString::localeAwareCompare("A", "a")); 0042 QCOMPARE(KStringHandler::naturalCompare("A", "a", Qt::CaseInsensitive), 0); 0043 QCOMPARE(KStringHandler::naturalCompare("a", "A", Qt::CaseInsensitive), 0); 0044 QCOMPARE(KStringHandler::naturalCompare("aAa", "AaA", Qt::CaseInsensitive), 0); 0045 QCOMPARE(KStringHandler::naturalCompare("aaa", "AAA", Qt::CaseInsensitive), 0); 0046 0047 QCOMPARE(KStringHandler::naturalCompare("1", "2", Qt::CaseSensitive), -1); 0048 QCOMPARE(KStringHandler::naturalCompare("1", "10", Qt::CaseSensitive), -1); 0049 QCOMPARE(KStringHandler::naturalCompare("9", "10", Qt::CaseSensitive), -1); 0050 QCOMPARE(KStringHandler::naturalCompare("1", "11", Qt::CaseSensitive), -1); 0051 QCOMPARE(KStringHandler::naturalCompare("1", "12", Qt::CaseSensitive), -1); 0052 QCOMPARE(KStringHandler::naturalCompare("1", "100", Qt::CaseSensitive), -1); 0053 0054 QCOMPARE(KStringHandler::naturalCompare("1a", "2a", Qt::CaseSensitive), -1); 0055 QCOMPARE(KStringHandler::naturalCompare("1b", "1a", Qt::CaseSensitive), +1); 0056 0057 QCOMPARE(KStringHandler::naturalCompare("a1", "a2", Qt::CaseSensitive), -1); 0058 QCOMPARE(KStringHandler::naturalCompare("a1", "a10", Qt::CaseSensitive), -1); 0059 QCOMPARE(KStringHandler::naturalCompare("a9", "a10", Qt::CaseSensitive), -1); 0060 QCOMPARE(KStringHandler::naturalCompare("a1", "a11", Qt::CaseSensitive), -1); 0061 QCOMPARE(KStringHandler::naturalCompare("a1", "a12", Qt::CaseSensitive), -1); 0062 QCOMPARE(KStringHandler::naturalCompare("a1", "a100", Qt::CaseSensitive), -1); 0063 0064 QCOMPARE(KStringHandler::naturalCompare("a1a1", "a2a1", Qt::CaseSensitive), -1); 0065 QCOMPARE(KStringHandler::naturalCompare("a1a1", "a1a2", Qt::CaseSensitive), -1); 0066 QCOMPARE(KStringHandler::naturalCompare("a1a1", "a10a1", Qt::CaseSensitive), -1); 0067 QCOMPARE(KStringHandler::naturalCompare("a1a1", "a1a10", Qt::CaseSensitive), -1); 0068 0069 QCOMPARE(KStringHandler::naturalCompare("Test 1.gif", "Test 2.gif", Qt::CaseSensitive), -1); 0070 QCOMPARE(KStringHandler::naturalCompare("Test 1.gif", "Test 10.gif", Qt::CaseSensitive), -1); 0071 QCOMPARE(KStringHandler::naturalCompare("Test 9.gif", "Test 10.gif", Qt::CaseSensitive), -1); 0072 0073 QCOMPARE(KStringHandler::naturalCompare("cmake_2.4.6", "cmake_2.4.10", Qt::CaseSensitive), -1); 0074 QCOMPARE(KStringHandler::naturalCompare("cmake_2.4.10", "cmake_2.4.11", Qt::CaseSensitive), -1); 0075 QCOMPARE(KStringHandler::naturalCompare("cmake_2.4.6", "cmake_2.5.6", Qt::CaseSensitive), -1); 0076 QCOMPARE(KStringHandler::naturalCompare("cmake_2.4.6", "cmake_3.4.6", Qt::CaseSensitive), -1); 0077 0078 QCOMPARE(KStringHandler::naturalCompare("A-123.txt", "A-a.txt", Qt::CaseSensitive), -1); 0079 QCOMPARE(KStringHandler::naturalCompare("A-012.txt", "A-a.txt", Qt::CaseSensitive), -1); 0080 0081 // bug 191865 0082 QCOMPARE(KStringHandler::naturalCompare("E & G", "E & J", Qt::CaseSensitive), -1); 0083 QCOMPARE(KStringHandler::naturalCompare("E & J", "E & S", Qt::CaseSensitive), -1); 0084 QCOMPARE(KStringHandler::naturalCompare("E & S", "Em & M", Qt::CaseSensitive), -1); 0085 0086 // bug 181211 0087 QCOMPARE(KStringHandler::naturalCompare("queen__radio_ga_ga.mp3", "queen__somebody_to_love_live.mp3", Qt::CaseSensitive), -1); 0088 QCOMPARE(KStringHandler::naturalCompare("queen__somebody_to_love_live.mp3", "queens_of_the_stone_age__no_one_knows.mp3", Qt::CaseSensitive), -1); 0089 0090 // bug 201101 0091 QCOMPARE(KStringHandler::naturalCompare("text", "text.txt", Qt::CaseSensitive), -1); 0092 QCOMPARE(KStringHandler::naturalCompare("text.txt", "text1", Qt::CaseSensitive), -1); 0093 QCOMPARE(KStringHandler::naturalCompare("text1", "text1.txt", Qt::CaseSensitive), -1); 0094 QCOMPARE(KStringHandler::naturalCompare("A B", "A.B", Qt::CaseSensitive), -1); 0095 QCOMPARE(KStringHandler::naturalCompare("A.B", "A B", Qt::CaseSensitive), +1); 0096 0097 // bug 231445 0098 QCOMPARE(KStringHandler::naturalCompare("1", "a", Qt::CaseSensitive), -1); 0099 QCOMPARE(KStringHandler::naturalCompare("a", "v01 1", Qt::CaseSensitive), -1); 0100 QCOMPARE(KStringHandler::naturalCompare("v01 1", "v01 a", Qt::CaseSensitive), -1); 0101 0102 // bug 237551 0103 QCOMPARE(KStringHandler::naturalCompare("sysvinit-2.86-i486-6.txt", "sysvinit-2.86-i486-6.txz", Qt::CaseSensitive), -1); 0104 QCOMPARE(KStringHandler::naturalCompare("sysvinit-2.86-i486-6.txz", "sysvinit-2.86-i486-6.txz.asc", Qt::CaseSensitive), -1); 0105 QCOMPARE(KStringHandler::naturalCompare("sysvinit-2.86-i486-6.txz.asc", "sysvinit-functions-8.53-i486-2.txt", Qt::CaseSensitive), -1); 0106 QCOMPARE(KStringHandler::naturalCompare("sysvinit-functions-8.53-i486-2.txt", "sysvinit-functions-8.53-i486-2.txz", Qt::CaseSensitive), -1); 0107 QCOMPARE(KStringHandler::naturalCompare("sysvinit-functions-8.53-i486-2.txz", "sysvinit-functions-8.53-i486-2.txz.asc", Qt::CaseSensitive), -1); 0108 QCOMPARE(KStringHandler::naturalCompare("sysvinit-functions-8.53-i486-2.txz.asc", "sysvinit-scripts-1.2-noarch-31.txt", Qt::CaseSensitive), -1); 0109 QCOMPARE(KStringHandler::naturalCompare("sysvinit-scripts-1.2-noarch-31.txt", "sysvinit-scripts-1.2-noarch-31.txz", Qt::CaseSensitive), -1); 0110 QCOMPARE(KStringHandler::naturalCompare("sysvinit-scripts-1.2-noarch-31.txz", "sysvinit-scripts-1.2-noarch-31.txz.asc", Qt::CaseSensitive), -1); 0111 QCOMPARE(KStringHandler::naturalCompare("sysvinit-2.86-i486-6.txz.asc", "sysvinit-scripts-1.2-noarch-31.txz", Qt::CaseSensitive), -1); 0112 0113 // bug 237541 0114 QCOMPARE(KStringHandler::naturalCompare("Car and Driver 2008-10", "Car and Driver Buyer's Guide 2010", Qt::CaseSensitive), -1); 0115 QCOMPARE(KStringHandler::naturalCompare("Car and Driver 2008-10", "Car and Driver 2009-11", Qt::CaseSensitive), -1); 0116 QCOMPARE(KStringHandler::naturalCompare("Car and Driver 2009-11", "Car and Driver 2010-05", Qt::CaseSensitive), -1); 0117 0118 // bug 237788 0119 QCOMPARE(KStringHandler::naturalCompare(" ", ".", Qt::CaseInsensitive), -1); 0120 QCOMPARE(KStringHandler::naturalCompare(".", "_", Qt::CaseInsensitive), -1); 0121 QCOMPARE(KStringHandler::naturalCompare(" ", "_", Qt::CaseInsensitive), -1); 0122 QCOMPARE(KStringHandler::naturalCompare("abc.jpg", "abc1.jpg", Qt::CaseInsensitive), -1); 0123 QCOMPARE(KStringHandler::naturalCompare("abc1.jpg", "abc_a.jpg", Qt::CaseInsensitive), -1); 0124 QCOMPARE(KStringHandler::naturalCompare("abc.jpg", "abc_a.jpg", Qt::CaseInsensitive), -1); 0125 } 0126 0127 #include "naturalcomparetest.moc"