┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/tests
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests')
-rw-r--r--src/tests/kfileitemmodeltest.cpp11
-rw-r--r--src/tests/kitemlistselectionmanagertest.cpp55
2 files changed, 59 insertions, 7 deletions
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index 23b899136..18580c24b 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -162,14 +162,17 @@ void KFileItemModelTest::testNewItems()
void KFileItemModelTest::testRemoveItems()
{
m_testDir->createFile("a.txt");
+ m_testDir->createFile("b.txt");
m_dirLister->openUrl(m_testDir->url());
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
- QCOMPARE(m_model->count(), 1);
+ QCOMPARE(m_model->count(), 2);
+ QVERIFY(isModelConsistent());
m_testDir->removeFile("a.txt");
m_dirLister->updateDirectory(m_testDir->url());
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsRemoved(KItemRangeList)), DefaultTimeout));
- QCOMPARE(m_model->count(), 0);
+ QCOMPARE(m_model->count(), 1);
+ QVERIFY(isModelConsistent());
}
void KFileItemModelTest::testSetData()
@@ -675,6 +678,10 @@ void KFileItemModelTest::testNameFilter()
bool KFileItemModelTest::isModelConsistent() const
{
+ if (m_model->m_items.count() != m_model->m_itemData.count()) {
+ return false;
+ }
+
for (int i = 0; i < m_model->count(); ++i) {
const KFileItem item = m_model->fileItem(i);
if (item.isNull()) {
diff --git a/src/tests/kitemlistselectionmanagertest.cpp b/src/tests/kitemlistselectionmanagertest.cpp
index 2fa6f677b..7f79197a9 100644
--- a/src/tests/kitemlistselectionmanagertest.cpp
+++ b/src/tests/kitemlistselectionmanagertest.cpp
@@ -27,18 +27,28 @@ class DummyModel : public KItemModelBase
{
public:
DummyModel();
+ void setCount(int count);
virtual int count() const;
virtual QHash<QByteArray, QVariant> data(int index) const;
+
+private:
+ int m_count;
};
DummyModel::DummyModel() :
- KItemModelBase()
+ KItemModelBase(),
+ m_count(100)
+{
+}
+
+void DummyModel::setCount(int count)
{
+ m_count = count;
}
int DummyModel::count() const
{
- return 100;
+ return m_count;
}
QHash<QByteArray, QVariant> DummyModel::data(int index) const
@@ -48,7 +58,6 @@ QHash<QByteArray, QVariant> DummyModel::data(int index) const
}
-
class KItemListSelectionManagerTest : public QObject
{
Q_OBJECT
@@ -67,24 +76,30 @@ private slots:
void testAnchoredSelection();
void testChangeSelection_data();
void testChangeSelection();
+ void testDeleteCurrentItem_data();
+ void testDeleteCurrentItem();
private:
void verifySelectionChange(QSignalSpy& spy, const QSet<int>& currentSelection, const QSet<int>& previousSelection) const;
KItemListSelectionManager* m_selectionManager;
+ DummyModel* m_model;
};
void KItemListSelectionManagerTest::init()
{
+ m_model = new DummyModel();
m_selectionManager = new KItemListSelectionManager();
- m_selectionManager->setModel(new DummyModel());
+ m_selectionManager->setModel(m_model);
}
void KItemListSelectionManagerTest::cleanup()
{
- delete m_selectionManager->model();
delete m_selectionManager;
m_selectionManager = 0;
+
+ delete m_model;
+ m_model = 0;
}
void KItemListSelectionManagerTest::testConstructor()
@@ -474,6 +489,36 @@ void KItemListSelectionManagerTest::testChangeSelection()
verifySelectionChange(spySelectionChanged, QSet<int>(), finalSelection);
}
+void KItemListSelectionManagerTest::testDeleteCurrentItem_data()
+{
+ QTest::addColumn<int>("oldCurrentItemIndex");
+ QTest::addColumn<int>("removeIndex");
+ QTest::addColumn<int>("removeCount");
+ QTest::addColumn<int>("newCurrentItemIndex");
+
+ QTest::newRow("Remove before") << 50 << 0 << 10 << 40;
+ QTest::newRow("Remove after") << 50 << 51 << 10 << 50;
+ QTest::newRow("Remove exactly current item") << 50 << 50 << 1 << 50;
+ QTest::newRow("Remove around current item") << 50 << 45 << 10 << 50;
+ QTest::newRow("Remove all except one item") << 50 << 1 << 99 << 0;
+}
+
+void KItemListSelectionManagerTest::testDeleteCurrentItem()
+{
+ QFETCH(int, oldCurrentItemIndex);
+ QFETCH(int, removeIndex);
+ QFETCH(int, removeCount);
+ QFETCH(int, newCurrentItemIndex);
+
+ m_selectionManager->setCurrentItem(oldCurrentItemIndex);
+
+ const int newCount = m_model->count() - removeCount;
+ m_model->setCount(newCount);
+ m_selectionManager->itemsRemoved(KItemRangeList() << KItemRange(removeIndex, removeCount));
+
+ QCOMPARE(m_selectionManager->currentItem(), newCurrentItemIndex);
+}
+
void KItemListSelectionManagerTest::verifySelectionChange(QSignalSpy& spy,
const QSet<int>& currentSelection,
const QSet<int>& previousSelection) const