Add Plasma task group shortcuts
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
// 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"
|
||||
Reference in New Issue
Block a user