chore(new_backend): add window desktop and activities tests

This commit is contained in:
Mikhail Zolotukhin 2022-03-29 13:09:20 +03:00 committed by Genda
parent 92bc966cd1
commit 1771577385
3 changed files with 98 additions and 0 deletions

View File

@ -4,6 +4,7 @@
#include <doctest/doctest.h>
#include <QObject>
#include <QString>
#include "engine/surface.hpp"
#include "engine/window.hpp"
@ -111,3 +112,85 @@ TEST_CASE("Window Visibility")
CHECK(visible == true);
}
}
TEST_CASE("Desktops List")
{
auto fakeKWinClient = FakeKWinClient();
auto fakeKWinWorkspace = FakeKWinWorkspace();
auto client = PlasmaApi::Client(&fakeKWinClient);
auto workspace = PlasmaApi::Workspace(&fakeKWinWorkspace);
auto window = Bismuth::Window(client, workspace);
SUBCASE("Window on one desktop")
{
fakeKWinClient = FakeKWinClient();
fakeKWinClient.m_desktop = 2;
fakeKWinClient.m_onAllDesktops = false;
auto desktops = window.desktops();
CHECK(desktops.size() == 1);
CHECK(desktops.front() == 2);
}
SUBCASE("Window on all desktops")
{
fakeKWinClient = FakeKWinClient();
fakeKWinClient.m_onAllDesktops = true;
fakeKWinWorkspace = FakeKWinWorkspace();
fakeKWinWorkspace.m_numberOfDesktops = 2;
auto desktops = window.desktops();
CHECK(desktops.size() == 2);
CHECK(desktops.front() == 1);
CHECK(desktops.back() == 2);
}
}
TEST_CASE("Activities List")
{
auto fakeKWinClient = FakeKWinClient();
auto fakeKWinWorkspace = FakeKWinWorkspace();
auto client = PlasmaApi::Client(&fakeKWinClient);
auto workspace = PlasmaApi::Workspace(&fakeKWinWorkspace);
auto window = Bismuth::Window(client, workspace);
SUBCASE("Window on one activity")
{
fakeKWinClient = FakeKWinClient();
fakeKWinClient.m_activities = QStringList({"stone-ocean"});
auto activities = window.activities();
CHECK(activities.size() == 1);
CHECK(activities.front() == QStringLiteral("stone-ocean"));
}
SUBCASE("Window on two activities")
{
fakeKWinClient = FakeKWinClient();
fakeKWinClient.m_activities = QStringList({"stone-ocean", "diamond-is-unbreakable"});
auto activities = window.activities();
CHECK(activities.size() == 2);
CHECK(activities.front() == QStringLiteral("stone-ocean"));
CHECK(activities.back() == QStringLiteral("diamond-is-unbreakable"));
}
SUBCASE("Window on all activities")
{
fakeKWinClient = FakeKWinClient();
fakeKWinClient.m_activities = QStringList();
fakeKWinWorkspace.m_activities = QStringList({"stone-ocean", "diamond-is-unbreakable"});
auto activities = window.activities();
CHECK(activities.size() == 2);
CHECK(activities.front() == QStringLiteral("stone-ocean"));
CHECK(activities.back() == QStringLiteral("diamond-is-unbreakable"));
}
}

View File

@ -2,3 +2,10 @@
// SPDX-License-Identifier: MIT
#include "workspace.mock.hpp"
FakeKWinWorkspace &FakeKWinWorkspace::operator=(const FakeKWinWorkspace &rhs)
{
if (this != &rhs) { }
return *this;
}

View File

@ -14,7 +14,15 @@ class FakeKWinWorkspace : public QObject
{
Q_OBJECT
Q_PROPERTY(int desktops MEMBER m_numberOfDesktops)
Q_PROPERTY(QStringList activities MEMBER m_activities)
public:
FakeKWinWorkspace &operator=(const FakeKWinWorkspace &);
int m_numberOfDesktops{};
QStringList m_activities{};
Q_SIGNALS:
void numberScreensChanged(int count);
void screenResized(int screen);