91 lines
3.2 KiB
C++
91 lines
3.2 KiB
C++
// SPDX-License-Identifier: MIT
|
|
|
|
#include "../taskselection.h"
|
|
|
|
#include <QStandardItemModel>
|
|
#include <QTest>
|
|
|
|
#include <abstracttasksmodel.h>
|
|
|
|
using TaskManager::AbstractTasksModel;
|
|
|
|
class TaskSelectionTest : public QObject
|
|
{
|
|
Q_OBJECT
|
|
|
|
private Q_SLOTS:
|
|
void returnsTopLevelTask();
|
|
void selectsChildByCyclePosition();
|
|
void startsWithFirstChild();
|
|
void keepsSeparateLaunchersAsSlots();
|
|
void mergesLauncherWithRunningApplication();
|
|
};
|
|
|
|
void TaskSelectionTest::returnsTopLevelTask()
|
|
{
|
|
QStandardItemModel model;
|
|
model.appendRow(new QStandardItem(QStringLiteral("Dolphin")));
|
|
|
|
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0));
|
|
QVERIFY(!taskToActivate(model, 1, 0).isValid());
|
|
}
|
|
|
|
void TaskSelectionTest::selectsChildByCyclePosition()
|
|
{
|
|
QStandardItemModel model;
|
|
auto *group = new QStandardItem(QStringLiteral("Dolphin"));
|
|
group->appendRow(new QStandardItem(QStringLiteral("one")));
|
|
group->appendRow(new QStandardItem(QStringLiteral("two")));
|
|
group->appendRow(new QStandardItem(QStringLiteral("three")));
|
|
model.appendRow(group);
|
|
|
|
const QModelIndex parent = model.index(0, 0);
|
|
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0, parent));
|
|
QCOMPARE(taskToActivate(model, 0, 1), model.index(1, 0, parent));
|
|
QCOMPARE(taskToActivate(model, 0, 2), model.index(2, 0, parent));
|
|
QCOMPARE(taskToActivate(model, 0, 3), model.index(0, 0, parent));
|
|
QCOMPARE(taskToActivate(model, 0, -1), model.index(2, 0, parent));
|
|
QCOMPARE(taskToActivate(model, 0, -2), model.index(1, 0, parent));
|
|
}
|
|
|
|
void TaskSelectionTest::startsWithFirstChild()
|
|
{
|
|
QStandardItemModel model;
|
|
auto *group = new QStandardItem(QStringLiteral("Firefox"));
|
|
group->appendRow(new QStandardItem(QStringLiteral("first")));
|
|
group->appendRow(new QStandardItem(QStringLiteral("second")));
|
|
model.appendRow(group);
|
|
|
|
QCOMPARE(taskToActivate(model, 0, 0), model.index(0, 0, model.index(0, 0)));
|
|
}
|
|
|
|
void TaskSelectionTest::keepsSeparateLaunchersAsSlots()
|
|
{
|
|
QStandardItemModel model;
|
|
model.appendRow(new QStandardItem(QStringLiteral("launcher")));
|
|
model.appendRow(new QStandardItem(QStringLiteral("window")));
|
|
|
|
QCOMPARE(logicalTaskRows(model, true), QVector<int>({0, 1}));
|
|
}
|
|
|
|
void TaskSelectionTest::mergesLauncherWithRunningApplication()
|
|
{
|
|
QStandardItemModel model;
|
|
model.appendRow(new QStandardItem(QStringLiteral("Dolphin launcher")));
|
|
model.appendRow(new QStandardItem(QStringLiteral("Firefox window")));
|
|
model.appendRow(new QStandardItem(QStringLiteral("Dolphin windows")));
|
|
|
|
model.setData(model.index(0, 0), true, AbstractTasksModel::IsLauncher);
|
|
model.setData(model.index(0, 0), QStringLiteral("org.kde.dolphin"), AbstractTasksModel::AppId);
|
|
model.setData(model.index(1, 0), true, AbstractTasksModel::IsWindow);
|
|
model.setData(model.index(1, 0), QStringLiteral("firefox"), AbstractTasksModel::AppId);
|
|
model.setData(model.index(2, 0), true, AbstractTasksModel::IsWindow);
|
|
model.setData(model.index(2, 0), QStringLiteral("org.kde.dolphin"), AbstractTasksModel::AppId);
|
|
|
|
QCOMPARE(logicalTaskRows(model, false), QVector<int>({2, 1}));
|
|
}
|
|
|
|
QTEST_GUILESS_MAIN(TaskSelectionTest)
|
|
|
|
#include "test-taskselection.moc"
|