summaryrefslogtreecommitdiff
path: root/client/test/testcomboboxsearch.cc
diff options
context:
space:
mode:
Diffstat (limited to 'client/test/testcomboboxsearch.cc')
-rw-r--r--client/test/testcomboboxsearch.cc121
1 files changed, 121 insertions, 0 deletions
diff --git a/client/test/testcomboboxsearch.cc b/client/test/testcomboboxsearch.cc
new file mode 100644
index 0000000..84f03c4
--- /dev/null
+++ b/client/test/testcomboboxsearch.cc
@@ -0,0 +1,121 @@
+#include <QtTest/QtTest>
+#include "util.h"
+#include "combobox.h"
+#include <QAbstractItemView>
+#include <QCompleter>
+
+static QString xml =
+ "<combobox name=\"mycombobox\" type=\"search\">\n"
+ " <item value=\"item1\" caption=\"Item 1\"/>\n"
+ " <item value=\"item3\" caption=\"Item 3\"/>\n"
+ " <item value=\"item2\" caption=\"Item 2\"/>\n"
+ " <item value=\"thingy\" caption=\"Thingy\"/>\n"
+ " <item value=\"bob\" caption=\"Bob\"/>\n"
+ "</combobox>\n";
+
+static QString xml_default =
+ "<combobox name=\"mycombobox\" type=\"search\" value=\"item2\">\n"
+ " <item value=\"item1\" caption=\"Item 1\"/>\n"
+ " <item value=\"item3\" caption=\"Item 3\"/>\n"
+ " <item value=\"item2\" caption=\"Item 2\"/>\n"
+ " <item value=\"thingy\" caption=\"Thingy\"/>\n"
+ " <item value=\"bob\" caption=\"Bob\"/>\n"
+ "</combobox>\n";
+
+class TestComboBoxSearch: public QObject
+{
+Q_OBJECT
+private slots:
+ void creation() { TEST_CREATION(ComboBox); }
+ void disable() { TEST_DISABLE(ComboBox); }
+
+ void searchFullItem()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+
+ // Full item search
+ QTest::keyClicks(&cmb, "Item 2");
+ QCOMPARE(cmb.getValue(), QString("Item 2"));
+ }
+
+ void searchPrefix()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+
+ // Item prefix search
+ QTest::keyClicks(&cmb, "T");
+ QCOMPARE(cmb.completer()->currentCompletion(), QString("Thingy"));
+
+ QTest::keyClicks(&cmb, cmb.completer()->currentCompletion());
+ QCOMPARE(cmb.getValue(), QString("Thingy"));
+ }
+
+ void searchNegative()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+
+ // Negative search
+ QTest::keyClicks(&cmb, "A");
+ QCOMPARE(cmb.getValue(), QString(""));
+ }
+
+ void arrowSelect()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+ QTest::keyPress(&cmb, Qt::Key_Down);
+ QTest::keyPress(&cmb, Qt::Key_Down);
+ QTest::keyPress(&cmb, Qt::Key_Enter);
+ QCOMPARE(cmb.getValue(), QString("item3"));
+ }
+ /* // It is set in MacroWindow generation .. not directly in the Widget.
+ void defaultValue()
+ {
+ QDomDocument doc; doc.setContent(xml_default);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+ QCOMPARE(cmb.getValue(), QString("item2"));
+ }
+ */
+ void changeEmitUser()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+ QSignalSpy spy(&cmb, SIGNAL(wasChanged()));
+ QTest::keyClicks(&cmb, "I");
+ QCOMPARE(spy.count(), 1);
+ }
+
+ void changeEmitSystem()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+ QSignalSpy spy(&cmb, SIGNAL(wasChanged()));
+ cmb.setValue("some value", "pentominos");
+ QCOMPARE(spy.count(), 1);
+ }
+
+ void changeNoEmitSystem()
+ {
+ QDomDocument doc; doc.setContent(xml);
+ QDomElement e = doc.documentElement();
+ ComboBox cmb(e, NULL);
+ QSignalSpy spy(&cmb, SIGNAL(wasChanged()));
+ cmb.setValue("some value", "pracro");
+ QCOMPARE(spy.count(), 0);
+ }
+};
+
+QTEST_MAIN(TestComboBoxSearch)
+#include "testcomboboxsearch.moc"
+
+