From 258a29f61fb379b6a259070213cd68ffa56d6d2d Mon Sep 17 00:00:00 2001 From: Frank Reininghaus Date: Wed, 10 Aug 2011 11:43:05 +0200 Subject: Initial support for anchored selections in the selection manager --- src/tests/kitemlistselectionmanagertest.cpp | 40 +++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 8 deletions(-) (limited to 'src/tests') diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp index 6b0059a5c..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,13 +106,6 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() QCOMPARE(qvariant_cast(spyCurrent.at(0).at(0)), 4); spyCurrent.takeFirst(); - m_selectionManager->setCurrentItem(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)), 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); @@ -122,6 +120,21 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() 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); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(0)), 2); + QCOMPARE(qvariant_cast(spyCurrent.at(0).at(1)), 4); + spyCurrent.takeFirst(); + + 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) << @@ -140,6 +153,9 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() QCOMPARE(qvariant_cast(spyAnchor.at(0).at(1)), 5); spyAnchor.takeFirst(); + 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) << @@ -157,6 +173,14 @@ void KItemListSelectionManagerTest::testCurrentItemAnchorItem() QCOMPARE(qvariant_cast(spyAnchor.at(0).at(0)), 5); 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() -- cgit v1.3