void tst_QXmlResultItems::evaluate() const { QFETCH(QString, queryString); QXmlQuery query; query.setQuery(queryString); QVERIFY(query.isValid()); QXmlResultItems result; query.evaluateTo(&result); QXmlItem item(result.next()); while(!item.isNull()) { QVERIFY(!result.current().isNull()); QVERIFY(!result.hasError()); item = result.next(); } /* Now, stress beyond the end. */ for(int i = 0; i < 3; ++i) { QVERIFY(result.current().isNull()); QVERIFY(result.next().isNull()); } }
void tst_QXmlResultItems::current() const { /* Check default value. */ { QXmlResultItems result; QVERIFY(result.current().isNull()); } /* Stress it on a default constructed value. */ { QXmlResultItems result; QVERIFY(result.current().isNull()); QVERIFY(result.current().isNull()); QVERIFY(result.current().isNull()); } }
void tst_QXmlResultItems::constCorrectness() const { const QXmlResultItems result; /* These functions should be const. */ result.current(); result.hasError(); }
/*! What's special about this is that it's not the QAbstractXmlForwardIterator::next() that triggers the error, it's QPatternist::Expression::evaluateSingleton() directly. */ void tst_QXmlResultItems::evalateWithInstantError() const { QXmlQuery query; MessageSilencer silencer; query.setMessageHandler(&silencer); query.setQuery(QLatin1String("fn:error()")); QXmlResultItems result; query.evaluateTo(&result); /* Check the values, and stress it. */ for(int i = 0; i < 3; ++i) { QVERIFY(result.current().isNull()); QVERIFY(result.next().isNull()); QVERIFY(result.hasError()); } }