Add test case for ScreenEdge::check
Behaves similar to the check with enter notify event.
This commit is contained in:
parent
857610668e
commit
1bb1ab44af
1 changed files with 67 additions and 0 deletions
|
@ -120,6 +120,7 @@ private Q_SLOTS:
|
||||||
void testInit();
|
void testInit();
|
||||||
void testCreatingInitialEdges();
|
void testCreatingInitialEdges();
|
||||||
void testCallback();
|
void testCallback();
|
||||||
|
void testCallbackWithCheck();
|
||||||
void testPushBack_data();
|
void testPushBack_data();
|
||||||
void testPushBack();
|
void testPushBack();
|
||||||
void testFullScreenBlocking();
|
void testFullScreenBlocking();
|
||||||
|
@ -519,6 +520,43 @@ void TestScreenEdges::testCallback()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TestScreenEdges::testCallbackWithCheck()
|
||||||
|
{
|
||||||
|
using namespace KWin;
|
||||||
|
auto s = ScreenEdges::self();
|
||||||
|
s->init();
|
||||||
|
TestObject callback;
|
||||||
|
QSignalSpy spy(&callback, SIGNAL(gotCallback(KWin::ElectricBorder)));
|
||||||
|
QVERIFY(spy.isValid());
|
||||||
|
s->reserve(ElectricLeft, &callback, "callback");
|
||||||
|
|
||||||
|
// check activating a different edge doesn't do anything
|
||||||
|
s->check(QPoint(50, 0), QDateTime::currentDateTime(), true);
|
||||||
|
QVERIFY(spy.isEmpty());
|
||||||
|
|
||||||
|
// try a direct activate without pushback
|
||||||
|
Cursor::setPos(0, 50);
|
||||||
|
s->check(QPoint(0, 50), QDateTime::currentDateTime(), true);
|
||||||
|
QCOMPARE(spy.count(), 1);
|
||||||
|
QEXPECT_FAIL("", "Argument says force no pushback, but it gets pushed back. Needs investigation", Continue);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(0, 50));
|
||||||
|
|
||||||
|
// use a different edge, this time with pushback
|
||||||
|
s->reserve(KWin::ElectricRight, &callback, "callback");
|
||||||
|
Cursor::setPos(99, 50);
|
||||||
|
s->check(QPoint(99, 50), QDateTime::currentDateTime());
|
||||||
|
QCOMPARE(spy.count(), 1);
|
||||||
|
QCOMPARE(spy.last().first().value<ElectricBorder>(), ElectricLeft);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(98, 50));
|
||||||
|
// and trigger it again
|
||||||
|
QTest::qWait(160);
|
||||||
|
Cursor::setPos(99, 50);
|
||||||
|
s->check(QPoint(99, 50), QDateTime::currentDateTime());
|
||||||
|
QCOMPARE(spy.count(), 2);
|
||||||
|
QCOMPARE(spy.last().first().value<ElectricBorder>(), ElectricRight);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(98, 50));
|
||||||
|
}
|
||||||
|
|
||||||
void TestScreenEdges::testPushBack_data()
|
void TestScreenEdges::testPushBack_data()
|
||||||
{
|
{
|
||||||
QTest::addColumn<KWin::ElectricBorder>("border");
|
QTest::addColumn<KWin::ElectricBorder>("border");
|
||||||
|
@ -571,6 +609,12 @@ void TestScreenEdges::testPushBack()
|
||||||
QVERIFY(s->isEntered(&event));
|
QVERIFY(s->isEntered(&event));
|
||||||
QVERIFY(spy.isEmpty());
|
QVERIFY(spy.isEmpty());
|
||||||
QTEST(Cursor::pos(), "expected");
|
QTEST(Cursor::pos(), "expected");
|
||||||
|
|
||||||
|
// do the same without the event, but the check method
|
||||||
|
Cursor::setPos(trigger);
|
||||||
|
s->check(trigger, QDateTime::currentDateTime());
|
||||||
|
QVERIFY(spy.isEmpty());
|
||||||
|
QTEST(Cursor::pos(), "expected");
|
||||||
}
|
}
|
||||||
|
|
||||||
void TestScreenEdges::testFullScreenBlocking()
|
void TestScreenEdges::testFullScreenBlocking()
|
||||||
|
@ -774,6 +818,29 @@ void TestScreenEdges::testClientEdge()
|
||||||
QVERIFY(!e->client());
|
QVERIFY(!e->client());
|
||||||
}
|
}
|
||||||
QCOMPARE(client.isHiddenInternal(), true);
|
QCOMPARE(client.isHiddenInternal(), true);
|
||||||
|
|
||||||
|
// now let's try to trigger the client showing with the check method instead of enter notify
|
||||||
|
s->reserve(&client, KWin::ElectricTop);
|
||||||
|
QCOMPARE(client.isHiddenInternal(), true);
|
||||||
|
Cursor::setPos(50, 0);
|
||||||
|
s->check(QPoint(50, 0), QDateTime::currentDateTime());
|
||||||
|
QCOMPARE(client.isHiddenInternal(), true);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(50, 1));
|
||||||
|
// and trigger
|
||||||
|
QTest::qWait(160);
|
||||||
|
Cursor::setPos(50, 0);
|
||||||
|
s->check(QPoint(50, 0), QDateTime::currentDateTime());
|
||||||
|
QCOMPARE(client.isHiddenInternal(), false);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(50, 1));
|
||||||
|
|
||||||
|
// unreserve by setting to none edge
|
||||||
|
s->reserve(&client, KWin::ElectricNone);
|
||||||
|
// check on previous edge again, should fail
|
||||||
|
client.setHiddenInternal(true);
|
||||||
|
Cursor::setPos(50, 0);
|
||||||
|
s->check(QPoint(50, 0), QDateTime::currentDateTime());
|
||||||
|
QCOMPARE(client.isHiddenInternal(), true);
|
||||||
|
QCOMPARE(Cursor::pos(), QPoint(50, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
QTEST_MAIN(TestScreenEdges)
|
QTEST_MAIN(TestScreenEdges)
|
||||||
|
|
Loading…
Reference in a new issue