75
78
m_object->setObjectName("testWindow");
76
79
m_object->setProperty("dynamicTestProperty", "testValue");
80
m_object->setProperty("dynamicStringProperty", QString("testValue"));
77
81
m_object->setProperty("myUInt", QVariant(quint8(5)));
78
82
m_object->setProperty("myStringList", QVariant(QStringList() << "string1" << "string2" << "string3"));
79
83
m_object->setProperty("myColor", QColor("red"));
113
117
QTest::addColumn<QVariant>("firstResultPropertyValue");
115
119
#ifdef QT5_SUPPORT
116
QTest::newRow("/") << "/" << 1 << "/tst_introspection" << "Children" << QVariant(QStringList() << "QMainWindow" << "QWidgetWindow");
117
QTest::newRow("//QWidget[id=6]") << "//QWidget[id=6]" << 1 << "/tst_introspection/QMainWindow/QWidget" << "objectName" << QVariant("centralTestWidget");
118
QTest::newRow("//QPushButton[id=9]") << "//QPushButton[id=9]" << 1 << "/tst_introspection/QMainWindow/QWidget/QPushButton" << "objectName" << QVariant("myButton2");
123
<< "/tst_introspection"
135
QTest::newRow("//QWidget[id=6]")
138
<< "/tst_introspection/QMainWindow/QWidget"
143
<< "centralTestWidget"
146
QTest::newRow("//QPushButton[id=9]")
147
<< "//QPushButton[id=9]"
149
<< "/tst_introspection/QMainWindow/QWidget/QPushButton"
120
QTest::newRow("/") << "/" << 1 << "/tst_introspection" << "Children" << QVariant(QStringList() << "QMainWindow");
121
QTest::newRow("//QWidget[id=5]") << "//QWidget[id=5]" << 1 << "/tst_introspection/QMainWindow/QWidget" << "objectName" << QVariant("centralTestWidget");
160
<< "/tst_introspection"
168
QTest::newRow("//QWidget[id=5]")
171
<< "/tst_introspection/QMainWindow/QWidget"
176
<< "centralTestWidget"
123
179
// Depending on the environment, Qt4 could add a second QWidget at position 6. That moves other items down by one.
124
if (Introspect("//QWidget[id=6]").count() > 0) {
125
QTest::newRow("//QPushButton[id=9]") << "//QPushButton[id=9]" << 1 << "/tst_introspection/QMainWindow/QWidget/QPushButton" << "objectName" << QVariant("myButton2");
127
QTest::newRow("//QPushButton[id=8]") << "//QPushButton[id=8]" << 1 << "/tst_introspection/QMainWindow/QWidget/QPushButton" << "objectName" << QVariant("myButton2");
180
if (Introspect("//QWidget[id=6]").count() > 0)
182
QTest::newRow("//QPushButton[id=9]")
183
<< "//QPushButton[id=9]"
185
<< "/tst_introspection/QMainWindow/QWidget/QPushButton"
195
QTest::newRow("//QPushButton[id=8]")
196
<< "//QPushButton[id=8]"
198
<< "/tst_introspection/QMainWindow/QWidget/QPushButton"
131
QTest::newRow("//GridLayout") << "//QGridLayout" << 1 << "/tst_introspection/QMainWindow/QWidget/QGridLayout" << "objectName" << QVariant("myTestLayout");
132
QTest::newRow("//QPushButton") << "//QPushButton" << 2 << "/tst_introspection/QMainWindow/QWidget/QPushButton" << "objectName" << QVariant("myButton1");
133
QTest::newRow("//QWidget/*") << "//QWidget/*" << 5 << "/tst_introspection/QMainWindow/QWidget/QGridLayout" << "objectName" << QVariant("myTestLayout");
134
QTest::newRow("broken query") << "broken query" << 0 << QString() << QString() << QVariant();
208
QTest::newRow("/tst_introspection/QMainWindow/QWidget/QGridLayout")
211
<< "/tst_introspection/QMainWindow/QWidget/QGridLayout"
219
QTest::newRow("parent of leaf node")
220
<< "/tst_introspection/QMainWindow/QWidget/QGridLayout/.."
222
<< "/tst_introspection/QMainWindow/QWidget"
227
<< "centralTestWidget"
230
QTest::newRow("parent of root node")
231
<< "/tst_introspection/.."
233
<< "/tst_introspection"
241
QTest::newRow("//QPushButton")
244
<< "/tst_introspection/QMainWindow/QWidget/QPushButton"
252
QTest::newRow("//QWidget/*")
255
<< "/tst_introspection/QMainWindow/QWidget/QGridLayout"
263
QTest::newRow("broken query")
137
271
void tst_Introspection::test_introspect()
142
276
QFETCH(QString, firstResultPropertyName);
143
277
QFETCH(QVariant, firstResultPropertyValue);
145
QList<QVariant> resultList = Introspect(xpath);
279
QList<NodeIntrospectionData> resultList = Introspect(xpath);
147
281
QCOMPARE(resultList.count(), resultCount);
149
283
if (resultCount > 0) {
150
QVariant firstResult = resultList.first();
151
QVariantMap firstResultProperties = firstResult.toList().last().toMap();
284
NodeIntrospectionData first_object = resultList.first();
153
QCOMPARE(firstResult.toList().first().toString(), firstResultType);
154
QCOMPARE(firstResultProperties.value(firstResultPropertyName), firstResultPropertyValue);
286
QCOMPARE(first_object.object_path, firstResultType);
287
QCOMPARE(first_object.state.value(firstResultPropertyName), firstResultPropertyValue);
185
318
QTest::addColumn<QVariant>("propertyValue");
186
319
QTest::addColumn<bool>("fuzzyCompare");
188
QTest::newRow("static property") << "objectName" << QVariant(m_object->objectName()) << false;
189
QTest::newRow("dynamic property") << "dynamicTestProperty" << m_object->property("dynamicTestProperty") << false;
191
QTest::newRow("int") << "width" << QVariant(m_object->width()) << false;
192
QTest::newRow("uint") << "myUInt" << m_object->property("myUInt") << false;
193
QTest::newRow("bool") << "visible" << QVariant(m_object->isVisible()) << false;
194
QTest::newRow("double") << "windowOpacity" << QVariant(m_object->windowOpacity()) << true;
196
QTest::newRow("QString") << "objectName" << QVariant(m_object->objectName()) << false;
197
QTest::newRow("QStringList") << "myStringList" << m_object->property("myStringList") << false;
198
QTest::newRow("QSize") << "maximumSize" << QVariant(QList<QVariant>() << m_object->maximumWidth() << m_object->maximumHeight()) << false;
199
QTest::newRow("QPoint") << "pos" << QVariant(QList<QVariant>() << m_object->x() << m_object->y()) << false;
200
QTest::newRow("QRect") << "geometry" << QVariant(QList<QVariant>() << m_object->geometry().x() << m_object->geometry().y() << m_object->geometry().width() << m_object->geometry().height()) << false;
201
QTest::newRow("QColor") << "myColor" << QVariant(QList<QVariant>() << 255 << 0 << 0 << 255) << false;
202
QTest::newRow("QByteArray") << "myByteArray" << m_object->property("myByteArray") << false;
203
QTest::newRow("QUrl") << "myUrl" << m_object->property("myUrl") << false;
204
QTest::newRow("QDateTime") << "myDateTime" << QVariant(m_object->property("myDateTime").toDateTime().toTime_t()) << false;
205
QTest::newRow("QDate") << "myDate" << QVariant(m_object->property("myDate").toDateTime().toTime_t()) << false;
206
QTest::newRow("QTime") << "myTime" << QVariant(m_object->property("myTime").toTime().toString("hh:mm:ss")) << false;
321
QTest::newRow("static property")
326
<< m_object->objectName()
330
QTest::newRow("dynamic property")
331
<< "dynamicTestProperty"
335
<< m_object->property("dynamicTestProperty")
348
QTest::newRow("uint")
353
<< m_object->property("myUInt")
357
QTest::newRow("bool")
362
<< m_object->isVisible()
366
QTest::newRow("double")
371
<< m_object->windowOpacity()
375
QTest::newRow("QString")
380
<< m_object->objectName()
384
QTest::newRow("QStringList")
389
<< m_object->property("myStringList")
393
QTest::newRow("QSize")
398
<< m_object->maximumWidth()
399
<< m_object->maximumHeight()
403
QTest::newRow("QPoint")
413
QTest::newRow("QRect")
418
<< m_object->geometry().x()
419
<< m_object->geometry().y()
420
<< m_object->geometry().width()
421
<< m_object->geometry().height()
425
QTest::newRow("QColor")
430
<< qvariant_cast<QColor>(m_object->property("myColor")).red()
431
<< qvariant_cast<QColor>(m_object->property("myColor")).green()
432
<< qvariant_cast<QColor>(m_object->property("myColor")).blue()
433
<< qvariant_cast<QColor>(m_object->property("myColor")).alpha()
437
QTest::newRow("QByteArray")
442
<< m_object->property("myByteArray")
446
QTest::newRow("QUrl")
451
<< m_object->property("myUrl")
455
QTest::newRow("QDateTime")
460
<< m_object->property("myDateTime").toDateTime().toTime_t()
464
QTest::newRow("QDate")
469
<< m_object->property("myDate").toDateTime().toTime_t()
473
QTest::newRow("QTime")
478
<< m_object->property("myTime").toTime().hour()
479
<< m_object->property("myTime").toTime().minute()
480
<< m_object->property("myTime").toTime().second()
481
<< m_object->property("myTime").toTime().msec()
209
486
void tst_Introspection::test_properties()
504
void tst_Introspection::test_property_matching()
508
QVERIFY(n.MatchStringProperty("dynamicStringProperty", "testValue") == true);
509
QVERIFY(n.MatchStringProperty("dynamicTestProperty", "testValue") == true);
510
QVERIFY(n.MatchIntegerProperty("myUInt", 5) == true);
511
QVERIFY(n.MatchBooleanProperty("visible", true) == true);
227
514
QTEST_MAIN(tst_Introspection)
229
516
#include "tst_introspection.moc"