[autotests] Add test case for sending window to desktop shortcuts
This commit is contained in:
parent
b1efdbaaf1
commit
8cd95b56e3
1 changed files with 67 additions and 0 deletions
|
@ -25,6 +25,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#include "shell_client.h"
|
#include "shell_client.h"
|
||||||
#include "scripting/scripting.h"
|
#include "scripting/scripting.h"
|
||||||
#include "useractions.h"
|
#include "useractions.h"
|
||||||
|
#include "virtualdesktops.h"
|
||||||
#include "wayland_server.h"
|
#include "wayland_server.h"
|
||||||
#include "workspace.h"
|
#include "workspace.h"
|
||||||
|
|
||||||
|
@ -50,6 +51,8 @@ private Q_SLOTS:
|
||||||
|
|
||||||
void testSwitchWindow();
|
void testSwitchWindow();
|
||||||
void testSwitchWindowScript();
|
void testSwitchWindowScript();
|
||||||
|
void testWindowToDesktop_data();
|
||||||
|
void testWindowToDesktop();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -196,5 +199,69 @@ void KWinBindingsTest::testSwitchWindowScript()
|
||||||
QTRY_COMPARE(workspace()->activeClient(), c4);
|
QTRY_COMPARE(workspace()->activeClient(), c4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KWinBindingsTest::testWindowToDesktop_data()
|
||||||
|
{
|
||||||
|
QTest::addColumn<int>("desktop");
|
||||||
|
|
||||||
|
QTest::newRow("2") << 2;
|
||||||
|
QTest::newRow("3") << 3;
|
||||||
|
QTest::newRow("4") << 4;
|
||||||
|
QTest::newRow("5") << 5;
|
||||||
|
QTest::newRow("6") << 6;
|
||||||
|
QTest::newRow("7") << 7;
|
||||||
|
QTest::newRow("8") << 8;
|
||||||
|
QTest::newRow("9") << 9;
|
||||||
|
QTest::newRow("10") << 10;
|
||||||
|
QTest::newRow("11") << 11;
|
||||||
|
QTest::newRow("12") << 12;
|
||||||
|
QTest::newRow("13") << 13;
|
||||||
|
QTest::newRow("14") << 14;
|
||||||
|
QTest::newRow("15") << 15;
|
||||||
|
QTest::newRow("16") << 16;
|
||||||
|
QTest::newRow("17") << 17;
|
||||||
|
QTest::newRow("18") << 18;
|
||||||
|
QTest::newRow("19") << 19;
|
||||||
|
QTest::newRow("20") << 20;
|
||||||
|
}
|
||||||
|
|
||||||
|
void KWinBindingsTest::testWindowToDesktop()
|
||||||
|
{
|
||||||
|
// first go to desktop one
|
||||||
|
VirtualDesktopManager::self()->setCurrent(VirtualDesktopManager::self()->desktops().first());
|
||||||
|
|
||||||
|
// now create a window
|
||||||
|
QScopedPointer<Surface> surface(Test::createSurface());
|
||||||
|
QScopedPointer<ShellSurface> shellSurface(Test::createShellSurface(surface.data()));
|
||||||
|
auto c = Test::renderAndWaitForShown(surface.data(), QSize(100, 50), Qt::blue);
|
||||||
|
QSignalSpy desktopChangedSpy(c, &AbstractClient::desktopChanged);
|
||||||
|
QVERIFY(desktopChangedSpy.isValid());
|
||||||
|
QCOMPARE(workspace()->activeClient(), c);
|
||||||
|
|
||||||
|
QFETCH(int, desktop);
|
||||||
|
VirtualDesktopManager::self()->setCount(desktop);
|
||||||
|
|
||||||
|
// now trigger the shortcut
|
||||||
|
auto invokeShortcut = [] (int desktop) {
|
||||||
|
auto msg = QDBusMessage::createMethodCall(
|
||||||
|
QStringLiteral("org.kde.kglobalaccel"),
|
||||||
|
QStringLiteral("/component/kwin"),
|
||||||
|
QStringLiteral("org.kde.kglobalaccel.Component"),
|
||||||
|
QStringLiteral("invokeShortcut"));
|
||||||
|
msg.setArguments(QList<QVariant>{QStringLiteral("Window to Desktop %1").arg(desktop)});
|
||||||
|
QDBusConnection::sessionBus().asyncCall(msg);
|
||||||
|
};
|
||||||
|
invokeShortcut(desktop);
|
||||||
|
QVERIFY(desktopChangedSpy.wait());
|
||||||
|
QCOMPARE(c->desktop(), desktop);
|
||||||
|
// back to desktop 1
|
||||||
|
invokeShortcut(1);
|
||||||
|
QVERIFY(desktopChangedSpy.wait());
|
||||||
|
QCOMPARE(c->desktop(), 1);
|
||||||
|
// invoke with one desktop too many
|
||||||
|
invokeShortcut(desktop + 1);
|
||||||
|
// that should fail
|
||||||
|
QVERIFY(!desktopChangedSpy.wait(100));
|
||||||
|
}
|
||||||
|
|
||||||
WAYLANDTEST_MAIN(KWinBindingsTest)
|
WAYLANDTEST_MAIN(KWinBindingsTest)
|
||||||
#include "kwinbindings_test.moc"
|
#include "kwinbindings_test.moc"
|
||||||
|
|
Loading…
Reference in a new issue