#include "input/AlternatesPicker.h" #include using namespace Qt::StringLiterals; class TestAlternatesPicker : public QObject { Q_OBJECT private Q_SLOTS: void opensAboveKeyExtendingRight() { AlternatesPicker picker; picker.open(QRectF(100, 100, 50, 60), {u"é"_s, u"è"_s, u"ê"_s}, 1000, -1000, 8); QVERIFY(picker.isOpen()); QCOMPARE(picker.rect(), QRectF(100, 32, 150, 60)); QCOMPARE(picker.selectedText(), u"é"); } void staysInsideRightEdgeAndSelectsUnderFinger() { AlternatesPicker picker; picker.open(QRectF(900, 100, 50, 60), {u"a"_s, u"b"_s, u"c"_s}, 1000, -1000, 8); QCOMPARE(picker.rect().left(), 850.0); QCOMPARE(picker.selectedText(), u"b"); // key center x=925 lies over the second cell } void selectionFollowsFingerAndClamps() { AlternatesPicker picker; picker.open(QRectF(100, 100, 50, 60), {u"a"_s, u"b"_s, u"c"_s}, 1000, -1000, 8); picker.selectAt(210); QCOMPARE(picker.selected(), 2); picker.selectAt(-50); QCOMPARE(picker.selected(), 0); picker.selectAt(5000); QCOMPARE(picker.selected(), 2); } void closeClears() { AlternatesPicker picker; picker.open(QRectF(0, 0, 10, 10), {u"a"_s}, 100, -1000, 0); picker.close(); QVERIFY(!picker.isOpen()); QVERIFY(picker.selectedText().isEmpty()); } void emptyKeyRectDoesNotOpen() { AlternatesPicker picker; picker.open(QRectF(), {u"a"_s, u"b"_s}, 1000, -1000, 8); QVERIFY(!picker.isOpen()); } void lowersToStayBelowMinTop() { AlternatesPicker picker; picker.open(QRectF(100, 10, 50, 60), {u"a"_s}, 1000, -20, 8); QCOMPARE(picker.rect().top(), -20.0); } }; QTEST_GUILESS_MAIN(TestAlternatesPicker) #include "tst_alternatespicker.moc"