mirror of
https://invent.kde.org/system/dolphin
synced 2024-11-05 18:47:12 +00:00
Add unit test for the calculation of "name" groups with expanded items
This prevents a possible regression that would have happened with the first version of https://git.reviewboard.kde.org/r/112725/ The problem was that isChildItem(int index) would return "false" incorrectly when the QHash for that item was not initialized yet. The grouping code would then try to read the "text" from the empty QHash, which yielded an empty QString, and then accessing the first character of that string caused a crash.
This commit is contained in:
parent
bbbfeb28c5
commit
54ba8cc85b
1 changed files with 41 additions and 1 deletions
|
@ -87,6 +87,7 @@ private slots:
|
|||
void removeParentOfHiddenItems();
|
||||
void testGeneralParentChildRelationships();
|
||||
void testNameRoleGroups();
|
||||
void testNameRoleGroupsWithExpandedItems();
|
||||
|
||||
private:
|
||||
QStringList itemsInModel() const;
|
||||
|
@ -1324,11 +1325,50 @@ void KFileItemModelTest::testNameRoleGroups()
|
|||
QCOMPARE(m_model->groups(), expectedGroups);
|
||||
}
|
||||
|
||||
void KFileItemModelTest::testNameRoleGroupsWithExpandedItems()
|
||||
{
|
||||
QSet<QByteArray> modelRoles = m_model->roles();
|
||||
modelRoles << "isExpanded" << "isExpandable" << "expandedParentsCount";
|
||||
m_model->setRoles(modelRoles);
|
||||
|
||||
QStringList files;
|
||||
files << "a/b.txt" << "a/c.txt" << "d/e.txt" << "d/f.txt";
|
||||
|
||||
m_testDir->createFiles(files);
|
||||
|
||||
m_model->setGroupedSorting(true);
|
||||
m_model->loadDirectory(m_testDir->url());
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(itemsInModel(), QStringList() << "a" << "d");
|
||||
|
||||
QList<QPair<int, QVariant> > expectedGroups;
|
||||
expectedGroups << QPair<int, QVariant>(0, QLatin1String("A"));
|
||||
expectedGroups << QPair<int, QVariant>(1, QLatin1String("D"));
|
||||
QCOMPARE(m_model->groups(), expectedGroups);
|
||||
|
||||
// Verify that expanding "a" and "d" will not change the groups (except for the index of "D").
|
||||
expectedGroups.clear();
|
||||
expectedGroups << QPair<int, QVariant>(0, QLatin1String("A"));
|
||||
expectedGroups << QPair<int, QVariant>(3, QLatin1String("D"));
|
||||
|
||||
m_model->setExpanded(0, true);
|
||||
QVERIFY(m_model->isExpanded(0));
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(itemsInModel(), QStringList() << "a" << "b.txt" << "c.txt" << "d");
|
||||
QCOMPARE(m_model->groups(), expectedGroups);
|
||||
|
||||
m_model->setExpanded(3, true);
|
||||
QVERIFY(m_model->isExpanded(3));
|
||||
QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(itemsInserted(KItemRangeList)), DefaultTimeout));
|
||||
QCOMPARE(itemsInModel(), QStringList() << "a" << "b.txt" << "c.txt" << "d" << "e.txt" << "f.txt");
|
||||
QCOMPARE(m_model->groups(), expectedGroups);
|
||||
}
|
||||
|
||||
QStringList KFileItemModelTest::itemsInModel() const
|
||||
{
|
||||
QStringList items;
|
||||
for (int i = 0; i < m_model->count(); i++) {
|
||||
items << m_model->data(i).value("text").toString();
|
||||
items << m_model->fileItem(i).text();
|
||||
}
|
||||
return items;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue