void tst_qqmllistreference::qmllistreference_invalid() { TestType tt; // Invalid { QQmlListReference r; QVERIFY(r.isValid() == false); QVERIFY(r.object() == 0); QVERIFY(r.listElementType() == 0); QVERIFY(r.canAt() == false); QVERIFY(r.canClear() == false); QVERIFY(r.canCount() == false); QVERIFY(r.append(0) == false); QVERIFY(r.at(10) == 0); QVERIFY(r.clear() == false); QVERIFY(r.count() == 0); QVERIFY(r.isReadable() == false); QVERIFY(r.isManipulable() == false); } // Non-property { QQmlListReference r(&tt, "blah"); QVERIFY(r.isValid() == false); QVERIFY(r.object() == 0); QVERIFY(r.listElementType() == 0); QVERIFY(r.canAt() == false); QVERIFY(r.canClear() == false); QVERIFY(r.canCount() == false); QVERIFY(r.append(0) == false); QVERIFY(r.at(10) == 0); QVERIFY(r.clear() == false); QVERIFY(r.count() == 0); QVERIFY(r.isReadable() == false); QVERIFY(r.isManipulable() == false); } // Non-list property { QQmlListReference r(&tt, "intProperty"); QVERIFY(r.isValid() == false); QVERIFY(r.object() == 0); QVERIFY(r.listElementType() == 0); QVERIFY(r.canAt() == false); QVERIFY(r.canClear() == false); QVERIFY(r.canCount() == false); QVERIFY(r.append(0) == false); QVERIFY(r.at(10) == 0); QVERIFY(r.clear() == false); QVERIFY(r.count() == 0); QVERIFY(r.isReadable() == false); QVERIFY(r.isManipulable() == false); } }
void tst_qqmllistreference::qmlmetaproperty() { TestType tt; tt.data.append(&tt); tt.data.append(0); tt.data.append(&tt); QQmlProperty prop(&tt, QLatin1String("data")); QVariant v = prop.read(); QVERIFY(v.userType() == qMetaTypeId<QQmlListReference>()); QQmlListReference ref = qvariant_cast<QQmlListReference>(v); QVERIFY(ref.count() == 3); QVERIFY(ref.listElementType() == &TestType::staticMetaObject); }
void tst_qqmllistreference::listElementType() { TestType *tt = new TestType; { QQmlListReference ref; QVERIFY(ref.listElementType() == 0); } { QQmlListReference ref(tt, "blah"); QVERIFY(ref.listElementType() == 0); } { QQmlListReference ref(tt, "data"); QVERIFY(ref.listElementType() == &TestType::staticMetaObject); delete tt; QVERIFY(ref.listElementType() == 0); } }
void tst_qqmllistreference::engineTypes() { QQmlEngine engine; QQmlComponent component(&engine, testFileUrl("engineTypes.qml")); QObject *o = component.create(); QVERIFY(o); QQmlProperty p1(o, QLatin1String("myList")); QVERIFY(p1.propertyTypeCategory() == QQmlProperty::List); QQmlProperty p2(o, QLatin1String("myList"), engine.rootContext()); QVERIFY(p2.propertyTypeCategory() == QQmlProperty::List); QVariant v = p2.read(); QVERIFY(v.userType() == qMetaTypeId<QQmlListReference>()); QQmlListReference ref = qvariant_cast<QQmlListReference>(v); QVERIFY(ref.count() == 2); QVERIFY(ref.listElementType()); QVERIFY(ref.listElementType() != &QObject::staticMetaObject); delete o; }