File indexing completed on 2024-05-12 05:30:39

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2016 Martin Gräßlin <mgraesslin@kde.org>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 #include "kwin_wayland_test.h"
0010 
0011 #include "cursor.h"
0012 #include "wayland_server.h"
0013 
0014 #include <QSignalSpy>
0015 
0016 namespace KWin
0017 {
0018 
0019 static const QString s_socketName = QStringLiteral("wayland_test_kwin_platform_cursor-0");
0020 
0021 class PlatformCursorTest : public QObject
0022 {
0023     Q_OBJECT
0024 private Q_SLOTS:
0025     void initTestCase();
0026     void testPos();
0027 };
0028 
0029 void PlatformCursorTest::initTestCase()
0030 {
0031     QSignalSpy applicationStartedSpy(kwinApp(), &Application::started);
0032     QVERIFY(waylandServer()->init(s_socketName));
0033     Test::setOutputConfig({
0034         QRect(0, 0, 1280, 1024),
0035         QRect(1280, 0, 1280, 1024),
0036     });
0037 
0038     kwinApp()->start();
0039     QVERIFY(applicationStartedSpy.wait());
0040 }
0041 
0042 void PlatformCursorTest::testPos()
0043 {
0044     // this test verifies that the PlatformCursor of the QPA plugin forwards ::pos and ::setPos correctly
0045     // that is QCursor should work just like KWin::Cursor
0046 
0047     // cursor should be centered on screen
0048     QCOMPARE(Cursors::self()->mouse()->pos(), QPoint(639, 511));
0049     QCOMPARE(Cursors::self()->mouse()->pos(), QPoint(639, 511));
0050 
0051     // let's set the pos through QCursor API
0052     QCursor::setPos(QPoint(10, 10));
0053     QCOMPARE(Cursors::self()->mouse()->pos(), QPoint(10, 10));
0054     QCOMPARE(QCursor::pos(), QPoint(10, 10));
0055 
0056     // and let's set the pos through Cursor API
0057     QCursor::setPos(QPoint(20, 20));
0058     QCOMPARE(Cursors::self()->mouse()->pos(), QPoint(20, 20));
0059     QCOMPARE(QCursor::pos(), QPoint(20, 20));
0060 }
0061 
0062 }
0063 
0064 WAYLANDTEST_MAIN(KWin::PlatformCursorTest)
0065 #include "platformcursor.moc"