[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 "scripting/scripting.h"
|
||||
#include "useractions.h"
|
||||
#include "virtualdesktops.h"
|
||||
#include "wayland_server.h"
|
||||
#include "workspace.h"
|
||||
|
||||
|
@ -50,6 +51,8 @@ private Q_SLOTS:
|
|||
|
||||
void testSwitchWindow();
|
||||
void testSwitchWindowScript();
|
||||
void testWindowToDesktop_data();
|
||||
void testWindowToDesktop();
|
||||
};
|
||||
|
||||
|
||||
|
@ -196,5 +199,69 @@ void KWinBindingsTest::testSwitchWindowScript()
|
|||
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)
|
||||
#include "kwinbindings_test.moc"
|
||||
|
|
Loading…
Reference in a new issue