X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/84aa4e75b492c74ce29fcadd572bee338f009b0b..258a29f61fb379b6a259070213cd68ffa56d6d2d:/src/tests/kitemlistselectionmanagertest.cpp diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp index 3d0c318ff..2832a4c76 100644 --- a/src/tests/kitemlistselectionmanagertest.cpp +++ b/src/tests/kitemlistselectionmanagertest.cpp @@ -92,7 +92,12 @@ void KItemListSelectionManagerTest::testConstructor() void KItemListSelectionManagerTest::testCurrentItemAnchorItem() { QSignalSpy spyCurrent(m_selectionManager, SIGNAL(currentChanged(int,int))); - QSignalSpy spyAnchor(m_selectionManager, SIGNAL(anchorChanged(int,int)));; + QSignalSpy spyAnchor(m_selectionManager, SIGNAL(anchorChanged(int,int))); + + m_selectionManager->setAnchoredSelectionActive(true); + QVERIFY(m_selectionManager->isAnchoredSelectionActive()); + m_selectionManager->setAnchoredSelectionMode(KItemListSelectionManager::Select); + QCOMPARE(m_selectionManager->anchoredSelectionMode(), KItemListSelectionManager::Select); // Set current item and check that the selection manager emits the currentChanged(int,int) signal correctly. m_selectionManager->setCurrentItem(4); @@ -101,6 +106,25 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() QCOMPARE(qvariant_cast(spyCurrent.at(0).at(0)), 4); spyCurrent.takeFirst(); + // Set anchor item and check that the selection manager emits the anchorChanged(int,int) signal correctly. + m_selectionManager->setAnchorItem(3); + QCOMPARE(m_selectionManager->anchorItem(), 3); + QCOMPARE(spyAnchor.count(), 1); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 3); + spyAnchor.takeFirst(); + + m_selectionManager->setAnchorItem(5); + QCOMPARE(m_selectionManager->anchorItem(), 5); + QCOMPARE(spyAnchor.count(), 1); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 5); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(1)), 3); + spyAnchor.takeFirst(); + + // Items between current and anchor should be selected now + QCOMPARE(m_selectionManager->selectedItems(), QSet() << 4 << 5); + QVERIFY(m_selectionManager->hasSelection()); + + // Change current item again and check the selection m_selectionManager->setCurrentItem(2); QCOMPARE(m_selectionManager->currentItem(), 2); QCOMPARE(spyCurrent.count(), 1); @@ -108,19 +132,55 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() QCOMPARE(qvariant_cast(spyCurrent.at(0).at(1)), 4); spyCurrent.takeFirst(); - // Set anchor item and check that the selection manager emits the anchorChanged(int,int) signal correctly. - m_selectionManager->setAnchorItem(3); - QCOMPARE(m_selectionManager->anchorItem(), 3); + QCOMPARE(m_selectionManager->selectedItems(), QSet() << 2 << 3 << 4 << 5); + QVERIFY(m_selectionManager->hasSelection()); + + // Inserting items should update current item and anchor item. + m_selectionManager->itemsInserted(KItemRangeList() << + KItemRange(0, 1) << + KItemRange(2, 2) << + KItemRange(6, 3)); + + QCOMPARE(m_selectionManager->currentItem(), 5); + QCOMPARE(spyCurrent.count(), 1); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(0)), 5); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(1)), 2); + spyCurrent.takeFirst(); + + QCOMPARE(m_selectionManager->anchorItem(), 8); QCOMPARE(spyAnchor.count(), 1); - QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 3); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 8); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(1)), 5); spyAnchor.takeFirst(); - m_selectionManager->setAnchorItem(5); + QCOMPARE(m_selectionManager->selectedItems(), QSet() << 5 << 6 << 7 << 8); + QVERIFY(m_selectionManager->hasSelection()); + + // Removing items should update current item and anchor item. + m_selectionManager->itemsRemoved(KItemRangeList() << + KItemRange(0, 2) << + KItemRange(2, 1) << + KItemRange(9, 2)); + + QCOMPARE(m_selectionManager->currentItem(), 2); + QCOMPARE(spyCurrent.count(), 1); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(0)), 2); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(1)), 5); + spyCurrent.takeFirst(); + QCOMPARE(m_selectionManager->anchorItem(), 5); QCOMPARE(spyAnchor.count(), 1); QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 5); - QCOMPARE(qvariant_cast(spyAnchor.at(0).at(1)), 3); + QCOMPARE(qvariant_cast(spyAnchor.at(0).at(1)), 8); spyAnchor.takeFirst(); + + QCOMPARE(m_selectionManager->selectedItems(), QSet() << 2 << 3 << 4 << 5); + QVERIFY(m_selectionManager->hasSelection()); + + // Verify that clearSelection() also clears the anchored selection. + m_selectionManager->clearSelection(); + QCOMPARE(m_selectionManager->selectedItems(), QSet()); + QVERIFY(!m_selectionManager->hasSelection()); } void KItemListSelectionManagerTest::testSetSelected_data()