void tst_qqmllistreference::canClear() { TestType *tt = new TestType; { QQmlListReference ref; QVERIFY(ref.canClear() == false); } { QQmlListReference ref(tt, "blah"); QVERIFY(ref.canClear() == false); } { QQmlListReference ref(tt, "data"); QVERIFY(ref.canClear() == true); delete tt; QVERIFY(ref.canClear() == false); } { TestType tt; tt.property.clear = 0; QQmlListReference ref(&tt, "data"); QVERIFY(ref.canClear() == false); } }
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); } }
static bool hasFullImplementedListInterface(const QQmlListReference &list) { return list.isValid() && list.canCount() && list.canAt() && list.canAppend() && list.canClear(); }