X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/aced85db1f7c72268860f0368402cf97f34e55c2..405dd624fb:/src/tests/kitemlistkeyboardsearchmanagertest.cpp diff --git a/src/tests/kitemlistkeyboardsearchmanagertest.cpp b/src/tests/kitemlistkeyboardsearchmanagertest.cpp index aeca1f779..53ef9ec3c 100644 --- a/src/tests/kitemlistkeyboardsearchmanagertest.cpp +++ b/src/tests/kitemlistkeyboardsearchmanagertest.cpp @@ -17,9 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include +#include "kitemviews/private/kitemlistkeyboardsearchmanager.h" -#include "kitemviews/kitemlistkeyboardsearchmanager_p.h" +#include +#include class KItemListKeyboardSearchManagerTest : public QObject { @@ -31,6 +32,7 @@ private slots: void testBasicKeyboardSearch(); void testAbortedKeyboardSearch(); void testRepeatedKeyPress(); + void testPressShift(); private: KItemListKeyboardSearchManager m_keyboardSearchManager; @@ -39,16 +41,17 @@ private: void KItemListKeyboardSearchManagerTest::init() { // Make sure that the previous search string is cleared - m_keyboardSearchManager.addKeys(""); + m_keyboardSearchManager.cancelSearch(); } void KItemListKeyboardSearchManagerTest::testBasicKeyboardSearch() { - QSignalSpy spy(&m_keyboardSearchManager, SIGNAL(changeCurrentItem(QString,bool))); + QSignalSpy spy(&m_keyboardSearchManager, &KItemListKeyboardSearchManager::changeCurrentItem); + QVERIFY(spy.isValid()); m_keyboardSearchManager.addKeys("f"); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.takeFirst(), QList() << "f" << true); + QCOMPARE(spy.takeFirst(), QList() << "f" << false); m_keyboardSearchManager.addKeys("i"); QCOMPARE(spy.count(), 1); @@ -69,11 +72,12 @@ void KItemListKeyboardSearchManagerTest::testAbortedKeyboardSearch() // to save time when running this test. m_keyboardSearchManager.setTimeout(100); - QSignalSpy spy(&m_keyboardSearchManager, SIGNAL(changeCurrentItem(QString,bool))); + QSignalSpy spy(&m_keyboardSearchManager, &KItemListKeyboardSearchManager::changeCurrentItem); + QVERIFY(spy.isValid()); m_keyboardSearchManager.addKeys("f"); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.takeFirst(), QList() << "f" << true); + QCOMPARE(spy.takeFirst(), QList() << "f" << false); m_keyboardSearchManager.addKeys("i"); QCOMPARE(spy.count(), 1); @@ -90,6 +94,13 @@ void KItemListKeyboardSearchManagerTest::testAbortedKeyboardSearch() m_keyboardSearchManager.addKeys("e"); QCOMPARE(spy.count(), 1); QCOMPARE(spy.takeFirst(), QList() << "le" << false); + + // the selection was deselected, for instance with Esc or a click outside the selection + m_keyboardSearchManager.slotSelectionChanged(KItemSet(), KItemSet() << 1); + + m_keyboardSearchManager.addKeys("a"); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.takeFirst(), QList() << "a" << false); } void KItemListKeyboardSearchManagerTest::testRepeatedKeyPress() @@ -100,11 +111,12 @@ void KItemListKeyboardSearchManagerTest::testRepeatedKeyPress() // 1. the string contains the repeated key only once, and // 2. the bool searchFromNextItem is true. - QSignalSpy spy(&m_keyboardSearchManager, SIGNAL(changeCurrentItem(QString,bool))); + QSignalSpy spy(&m_keyboardSearchManager, &KItemListKeyboardSearchManager::changeCurrentItem); + QVERIFY(spy.isValid()); m_keyboardSearchManager.addKeys("p"); QCOMPARE(spy.count(), 1); - QCOMPARE(spy.takeFirst(), QList() << "p" << true); + QCOMPARE(spy.takeFirst(), QList() << "p" << false); m_keyboardSearchManager.addKeys("p"); QCOMPARE(spy.count(), 1); @@ -120,6 +132,33 @@ void KItemListKeyboardSearchManagerTest::testRepeatedKeyPress() QCOMPARE(spy.takeFirst(), QList() << "pppq" << false); } -QTEST_KDEMAIN(KItemListKeyboardSearchManagerTest, NoGUI) +void KItemListKeyboardSearchManagerTest::testPressShift() +{ + // If the user presses Shift, i.e., to get a character like '_', + // KItemListController calls the addKeys(QString) method with an empty + // string. Make sure that this does not reset the current search. See + // https://bugs.kde.org/show_bug.cgi?id=321286 + + QSignalSpy spy(&m_keyboardSearchManager, &KItemListKeyboardSearchManager::changeCurrentItem); + QVERIFY(spy.isValid()); + + // Simulate that the user enters "a_b". + m_keyboardSearchManager.addKeys("a"); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.takeFirst(), QList() << "a" << false); + + m_keyboardSearchManager.addKeys(""); + QCOMPARE(spy.count(), 0); + + m_keyboardSearchManager.addKeys("_"); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.takeFirst(), QList() << "a_" << false); + + m_keyboardSearchManager.addKeys("b"); + QCOMPARE(spy.count(), 1); + QCOMPARE(spy.takeFirst(), QList() << "a_b" << false); +} + +QTEST_GUILESS_MAIN(KItemListKeyboardSearchManagerTest) #include "kitemlistkeyboardsearchmanagertest.moc"