diff options
-rwxr-xr-x | client/test.sh | 45 | ||||
-rw-r--r-- | client/test/testcomboboxedit.cc | 72 | ||||
-rw-r--r-- | client/test/testcomboboxsearch.cc | 121 | ||||
-rw-r--r-- | client/test/testcomboboxselect.cc | 72 | ||||
-rw-r--r-- | client/test/testlineedit.cc | 57 | ||||
-rw-r--r-- | client/widgets/combobox.cc | 2 |
6 files changed, 311 insertions, 58 deletions
diff --git a/client/test.sh b/client/test.sh index 1c3c96d..83dc675 100755 --- a/client/test.sh +++ b/client/test.sh @@ -3,9 +3,15 @@ TEST_PRO_IN=test.pro.in TEST_PRO=test.pro MAKEFILE=Makefile.test -TESTFILES=test/test*.cc TEST_APP=test_app +if [ -z $1 ] +then + TESTFILES=test/test*.cc +else + TESTFILES=$1 +fi + rm -f test.log for TEST in $TESTFILES @@ -16,27 +22,28 @@ do echo Testing $TEST: > $OUTPUT echo -n "* Compiling $TEST test" - echo Compiling $TEST test: > $OUTPUT + echo Compiling $TEST test: >> $OUTPUT echo ${COMPILE} >> $OUTPUT cpp -P -E -DTESTFILE=\"$TEST\" $TEST_PRO_IN -o $TEST_PRO - qmake -makefile $TEST_PRO -o $MAKEFILE - if make -f $MAKEFILE >> ${OUTPUT} 2>&1; then - echo -e "\r\t\t\t\t\t\t[\033[1;32mSuccess\033[0;2m]" - echo "[Success]" >> $OUTPUT - - echo -n "* Running $TEST test" - echo Running $TEST test: >> $OUTPUT - if ./$TEST_APP >> $OUTPUT 2>&1; then - echo -e "\r\t\t\t\t\t\t[\033[1;32mSuccess\033[0;2m]" - echo "[Success]" >> $OUTPUT - else - echo -e "\r\t\t\t\t\t\t[\033[1;31mFailure\033[0;2m]" - echo "[Failure]" >> $OUTPUT - fi + qmake -makefile $TEST_PRO -o $MAKEFILE + if make -f $MAKEFILE 2>&1 >> ${OUTPUT}; then + echo -e "\r\t\t\t\t\t\t[\033[1;32mSuccess\033[0;2m]" + echo "[Success]" >> $OUTPUT + + echo -n "* Running $TEST test" + echo Running $TEST test: >> $OUTPUT + if ./$TEST_APP 2>&1 >> $OUTPUT ; then + echo -e "\r\t\t\t\t\t\t[\033[1;32mSuccess\033[0;2m]" + echo "[Success]" >> $OUTPUT + else + echo -e "\r\t\t\t\t\t\t[\033[1;31mFailure\033[0;2m]" + echo "[Failure]" >> $OUTPUT + fi else - echo -e "\r\t\t\t\t\t\t[\033[1;31mFailure\033[0;2m]" - echo "[Failure]" >> $OUTPUT + echo -e "\r\t\t\t\t\t\t[\033[1;31mFailure\033[0;2m]" + echo "[Failure]" >> $OUTPUT fi + + rm -f $MAKEFILE $TEST_PRO $TEST_APP done -rm -f $MAKEFILE $TEST_PRO $TEST_APP diff --git a/client/test/testcomboboxedit.cc b/client/test/testcomboboxedit.cc new file mode 100644 index 0000000..5294886 --- /dev/null +++ b/client/test/testcomboboxedit.cc @@ -0,0 +1,72 @@ +#include <QtTest/QtTest> +#include "util.h" +#include "combobox.h" +#include <QAbstractItemView> + +static QString xml_search = + "<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" + "</combobox>\n"; + +static QString xml_edit = + "<combobox name=\"mycombobox\" type=\"edit\">\n" + " <item value=\"item1\" caption=\"Item 1\"/>\n" + " <item value=\"item3\" caption=\"Item 3\"/>\n" + " <item value=\"item2\" caption=\"Item 2\"/>\n" + "</combobox>\n"; + +static QString xml_select = + "<combobox name=\"mycombobox\" type=\"select\">\n" + " <item value=\"item1\" caption=\"Item 1\"/>\n" + " <item value=\"item3\" caption=\"Item 3\"/>\n" + " <item value=\"item2\" caption=\"Item 2\"/>\n" + "</combobox>\n"; + +class TestComboBox: public QObject +{ +Q_OBJECT +private slots: + void creation() { TEST_CREATION(ComboBox); } + void disable() { TEST_DISABLE(ComboBox); } + + void editSelect() + { + QDomDocument doc; doc.setContent(xml_search); + QDomElement e = doc.documentElement(); + ComboBox cmb(e, NULL); + + QTest::keyClicks(&cmb, "Item 2"); + QCOMPARE(cmb.getValue(), QString("Item 2")); + } + + void arrowSelect() + { + QDomDocument doc; doc.setContent(xml_select); + QDomElement e = doc.documentElement(); + + ComboBox cmb(e, NULL); + + cmb.setFocus(); + QTest::keyPress(&cmb, Qt::Key_Down); + QTest::keyPress(&cmb, Qt::Key_Down); + QTest::keyPress(&cmb, Qt::Key_Enter); + QCOMPARE(cmb.getValue(), QString("item3")); + } + + void changeEmits() + { + QDomDocument doc; doc.setContent(xml_search); + QDomElement e = doc.documentElement(); + ComboBox cmb(e, NULL); + QSignalSpy spy(&cmb, SIGNAL(wasChanged())); + QTest::keyClicks(&cmb, "I"); + QCOMPARE(spy.count(), 1); + } +}; + +QTEST_MAIN(TestComboBox) +#include "testcombobox.moc" + + 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" + + diff --git a/client/test/testcomboboxselect.cc b/client/test/testcomboboxselect.cc new file mode 100644 index 0000000..5294886 --- /dev/null +++ b/client/test/testcomboboxselect.cc @@ -0,0 +1,72 @@ +#include <QtTest/QtTest> +#include "util.h" +#include "combobox.h" +#include <QAbstractItemView> + +static QString xml_search = + "<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" + "</combobox>\n"; + +static QString xml_edit = + "<combobox name=\"mycombobox\" type=\"edit\">\n" + " <item value=\"item1\" caption=\"Item 1\"/>\n" + " <item value=\"item3\" caption=\"Item 3\"/>\n" + " <item value=\"item2\" caption=\"Item 2\"/>\n" + "</combobox>\n"; + +static QString xml_select = + "<combobox name=\"mycombobox\" type=\"select\">\n" + " <item value=\"item1\" caption=\"Item 1\"/>\n" + " <item value=\"item3\" caption=\"Item 3\"/>\n" + " <item value=\"item2\" caption=\"Item 2\"/>\n" + "</combobox>\n"; + +class TestComboBox: public QObject +{ +Q_OBJECT +private slots: + void creation() { TEST_CREATION(ComboBox); } + void disable() { TEST_DISABLE(ComboBox); } + + void editSelect() + { + QDomDocument doc; doc.setContent(xml_search); + QDomElement e = doc.documentElement(); + ComboBox cmb(e, NULL); + + QTest::keyClicks(&cmb, "Item 2"); + QCOMPARE(cmb.getValue(), QString("Item 2")); + } + + void arrowSelect() + { + QDomDocument doc; doc.setContent(xml_select); + QDomElement e = doc.documentElement(); + + ComboBox cmb(e, NULL); + + cmb.setFocus(); + QTest::keyPress(&cmb, Qt::Key_Down); + QTest::keyPress(&cmb, Qt::Key_Down); + QTest::keyPress(&cmb, Qt::Key_Enter); + QCOMPARE(cmb.getValue(), QString("item3")); + } + + void changeEmits() + { + QDomDocument doc; doc.setContent(xml_search); + QDomElement e = doc.documentElement(); + ComboBox cmb(e, NULL); + QSignalSpy spy(&cmb, SIGNAL(wasChanged())); + QTest::keyClicks(&cmb, "I"); + QCOMPARE(spy.count(), 1); + } +}; + +QTEST_MAIN(TestComboBox) +#include "testcombobox.moc" + + diff --git a/client/test/testlineedit.cc b/client/test/testlineedit.cc index 4eb886b..c5ab8b3 100644 --- a/client/test/testlineedit.cc +++ b/client/test/testlineedit.cc @@ -2,6 +2,8 @@ #include "util.h" #include "lineedit.h" +static QString xml = "<lineedit name=\"mylineedit\"/>\n"; + class TestLineEdit: public QObject { Q_OBJECT @@ -10,46 +12,25 @@ private slots: void disable() { TEST_DISABLE(LineEdit); } void value() { TEST_VALUE(LineEdit); } void edit() - { - QDomElement e = getWidgetElement("LineEdit", "mywidget"); - MacroWindow *wnd = createMacroWindow(); - LineEdit le(e, wnd); - QTest::keyClicks(&le, "hello"); - QCOMPARE(le.getValue(), QString("hello")); + { + QDomDocument doc; doc.setContent(xml); + QDomElement e = doc.documentElement(); + LineEdit le(e, NULL); + QString teststring("hello"); + QTest::keyClicks(&le, teststring); + QCOMPARE(le.getValue(), teststring); } + + void changeEmits() + { + QDomDocument doc; doc.setContent(xml); + QDomElement e = doc.documentElement(); + LineEdit le(e, NULL); + QSignalSpy spy(&le, SIGNAL(wasChanged())); + QTest::keyClicks(&le, "h"); + QCOMPARE(spy.count(), 1); + } }; QTEST_MAIN(TestLineEdit) #include "testlineedit.moc" - -/** -class LineEdit : public QLineEdit, public Widget -{ -Q_OBJECT -public: - LineEdit(QDomNode &node, MacroWindow *macrowindow); - - QString getValue(); - void setValue(QString value, QString source = ""); - - void enable(); - void disable(); - bool isDisabled(); - - void connectFrom(const char *signal, - const QObject *receiver, const char *method); - - void connectTo(const QObject *sender, const char *signal, - const char *method); - - bool setKeyboardFocus(); - void setVisibility(bool visible); - -public slots: - void changed(); - void user_changed(); - -signals: - void wasChanged(); -}; - **/ diff --git a/client/widgets/combobox.cc b/client/widgets/combobox.cc index c4a7f13..bf25475 100644 --- a/client/widgets/combobox.cc +++ b/client/widgets/combobox.cc @@ -145,7 +145,7 @@ void ComboBox::setValue(QString value, QString source) int idx = findData(value); - printf("setValue(\"%s\") - %d\n", value.toStdString().c_str(), idx); + // printf("setValue(\"%s\") - %d\n", value.toStdString().c_str(), idx); ischangingbyuser = false; setCurrentIndex(idx); |