21#include <KConfigGroup>
27static const QString s_socketName = QStringLiteral(
"wayland_test_kwin_scripting_screenedge-0");
39 void testTouchEdge_data();
41 void testEdgeUnregister();
42 void testDeclarativeTouchEdge();
45 void triggerConfigReload();
48void ScreenEdgeTest::initTestCase()
55 auto config = KSharedConfig::openConfig(QString(), KConfig::SimpleConfig);
58 KConfigGroup plugins(config, QStringLiteral(
"Plugins"));
60 for (QString name : builtinNames) {
61 plugins.writeEntry(name + QStringLiteral(
"Enabled"),
false);
65 config->group(QStringLiteral(
"Windows")).writeEntry(
"ElectricBorderPushbackPixels", 0);
66 config->group(QStringLiteral(
"TabBox")).writeEntry(
"TouchBorderActivate",
int(
ElectricNone));
69 kwinApp()->setConfig(config);
72 QVERIFY(applicationStartedSpy.wait());
79void ScreenEdgeTest::init()
88void ScreenEdgeTest::cleanup()
91 const QStringList scripts = {QFINDTESTDATA(
"./scripts/screenedge.js"), QFINDTESTDATA(
"./scripts/screenedgeunregister.js"), QFINDTESTDATA(
"./scripts/touchScreenedge.js")};
92 for (
const QString &script : scripts) {
93 if (!script.isEmpty()) {
102void ScreenEdgeTest::testEdge_data()
104 QTest::addColumn<KWin::ElectricBorder>(
"edge");
105 QTest::addColumn<QPoint>(
"triggerPos");
120void ScreenEdgeTest::testEdge()
122 const QString scriptToLoad = QFINDTESTDATA(
"./scripts/screenedge.js");
123 QVERIFY(!scriptToLoad.isEmpty());
126 auto config = kwinApp()->config();
128 config->group(QLatin1String(
"Script-") + scriptToLoad).writeEntry(
"Edge",
int(edge));
139 QVERIFY(runningChangedSpy.wait());
140 QCOMPARE(runningChangedSpy.count(), 1);
141 QCOMPARE(runningChangedSpy.first().first().toBool(),
true);
146 QFETCH(QPoint, triggerPos);
148 QCOMPARE(showDesktopSpy.count(), 1);
152void ScreenEdgeTest::testTouchEdge_data()
154 QTest::addColumn<KWin::ElectricBorder>(
"edge");
155 QTest::addColumn<QPoint>(
"triggerPos");
156 QTest::addColumn<QPoint>(
"motionPos");
167void ScreenEdgeTest::testTouchEdge()
169 const QString scriptToLoad = QFINDTESTDATA(
"./scripts/touchScreenedge.js");
170 QVERIFY(!scriptToLoad.isEmpty());
173 auto config = kwinApp()->config();
175 config->group(QLatin1String(
"Script-") + scriptToLoad).writeEntry(
"Edge",
int(edge));
186 QVERIFY(runningChangedSpy.wait());
187 QCOMPARE(runningChangedSpy.count(), 1);
188 QCOMPARE(runningChangedSpy.first().first().toBool(),
true);
193 QFETCH(QPoint, triggerPos);
194 quint32 timestamp = 0;
196 QFETCH(QPoint, motionPos);
199 QVERIFY(showDesktopSpy.wait());
200 QCOMPARE(showDesktopSpy.count(), 1);
204void ScreenEdgeTest::triggerConfigReload()
209void ScreenEdgeTest::testEdgeUnregister()
211 const QString scriptToLoad = QFINDTESTDATA(
"./scripts/screenedgeunregister.js");
212 QVERIFY(!scriptToLoad.isEmpty());
216 auto configGroup = s->
config();
219 const QPoint triggerPos = QPoint(0, 512);
223 QVERIFY(runningChangedSpy.wait());
229 QCOMPARE(showDesktopSpy.count(), 1);
234 showDesktopSpy.clear();
238 QCOMPARE(showDesktopSpy.count(), 1);
243 showDesktopSpy.clear();
246 configGroup.writeEntry(
"mode",
"unregister");
247 triggerConfigReload();
249 QCOMPARE(showDesktopSpy.count(), 0);
252 triggerConfigReload();
255void ScreenEdgeTest::testDeclarativeTouchEdge()
257 const QString scriptToLoad = QFINDTESTDATA(
"./scripts/screenedgetouch.qml");
258 QVERIFY(!scriptToLoad.isEmpty());
265 QTRY_COMPARE(runningChangedSpy.count(), 1);
270 quint32 timestamp = 0;
275 QVERIFY(showDesktopSpy.wait());
279#include "screenedge_test.moc"
void runningChanged(bool)
KConfigGroup config() const
QStringList listOfKnownEffects() const override
All the Effects this loader knows of.
AbstractScript * findScript(const QString &pluginName) const
Q_SCRIPTABLE Q_INVOKABLE int loadScript(const QString &filePath, const QString &pluginName=QString())
static Scripting * self()
void slotToggleShowDesktop()
ScreenEdges * screenEdges() const
void showingDesktopChanged(bool showing, bool animated)
#define WAYLANDTEST_MAIN(TestObject)
void setOutputConfig(const QList< QRect > &geometries)
void touchDown(qint32 id, const QPointF &pos, quint32 time)
void touchMotion(qint32 id, const QPointF &pos, quint32 time)
void touchUp(qint32 id, quint32 time)
WaylandServer * waylandServer()
InputRedirection * input()