diff options
Diffstat (limited to 'src/tests/kfileitemmodeltest.cpp')
| -rw-r--r-- | src/tests/kfileitemmodeltest.cpp | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp index 8c1f0d76a..f61bc246f 100644 --- a/src/tests/kfileitemmodeltest.cpp +++ b/src/tests/kfileitemmodeltest.cpp @@ -70,6 +70,8 @@ private Q_SLOTS: void testRemoveFilteredExpandedItems(); void testSorting(); void testNaturalSorting(); + void testStringCompare_data(); + void testStringCompare(); void testIndexForKeyboardSearch(); void testNameFilter(); void testEmptyPath(); @@ -1357,6 +1359,41 @@ void KFileItemModelTest::testNaturalSorting() QCOMPARE(itemsMovedSpy.takeFirst().at(1).value<QList<int>>(), QList<int>() << 4 << 6 << 1 << 2 << 3 << 5); } +void KFileItemModelTest::testStringCompare_data() +{ + QTest::addColumn<QString>("left"); + QTest::addColumn<QString>("right"); + QTest::addColumn<bool>("naturalSorting"); + QTest::addColumn<int>("expectedResult"); + + QTest::newRow("decimal") << QStringLiteral("0.09") << QStringLiteral("0.1") << true << -1; + QTest::newRow("version-patch") << QStringLiteral("v1.2.3") << QStringLiteral("v1.2.10") << true << -1; + QTest::newRow("version-patch-reversed") << QStringLiteral("v1.2.10") << QStringLiteral("v1.2.3") << true << 1; + QTest::newRow("version-minor") << QStringLiteral("v1.2.10") << QStringLiteral("v1.10.1") << true << -1; + QTest::newRow("numeric-basename-before-extension") << QStringLiteral("1.09.txt") << QStringLiteral("1.1.txt") << true << -1; + QTest::newRow("leading-dot-is-not-decimal") << QStringLiteral(".1") << QStringLiteral(".09") << true << -1; + QTest::newRow("natural-sorting-disabled") << QStringLiteral("v1.2.10") << QStringLiteral("v1.2.3") << false << -1; +} + +void KFileItemModelTest::testStringCompare() +{ + QFETCH(QString, left); + QFETCH(QString, right); + QFETCH(bool, naturalSorting); + QFETCH(int, expectedResult); + + QCollator collator; + collator.setNumericMode(true); + + m_model->m_naturalSorting = naturalSorting; + + const int result = m_model->stringCompare(left, right, collator); + QCOMPARE(result < 0 ? -1 : result > 0 ? 1 : 0, expectedResult); + + const int reverseResult = m_model->stringCompare(right, left, collator); + QCOMPARE(reverseResult < 0 ? -1 : reverseResult > 0 ? 1 : 0, -expectedResult); +} + void KFileItemModelTest::testIndexForKeyboardSearch() { QSignalSpy itemsInsertedSpy(m_model, &KFileItemModel::itemsInserted); |
