Xml: use new comparison helper macros
New comparison macros are used for following classes: -QXmlStreamAttribute -QXmlStreamNamespaceDeclaration -QXmlStreamNotationDeclaration -QXmlStreamEntityDeclaration Replace public operators operator==(), operator!=() of classes to friend methods comparesEqual(); Use QT_CORE_REMOVED_SINCE to get rid of current comparison methods and replace them with a friend. Add checkStreamNotationDeclarations()/checkStreamEntityDeclarations() test-cases to test change. Task-number: QTBUG-120300 Change-Id: I0b5642b2e23cc21ede7bc4888f0a9bddd6c08d07 Reviewed-by: Ivan Solovev <ivan.solovev@qt.io> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
This commit is contained in:
parent
c8fb376de5
commit
cd5dd8b95b
@ -1007,6 +1007,8 @@ int QObject::startTimer(std::chrono::milliseconds time, Qt::TimerType timerType)
|
|||||||
|
|
||||||
#include "qstring.h" // inlined API
|
#include "qstring.h" // inlined API
|
||||||
|
|
||||||
|
#include "qxmlstream.h" // inlined API
|
||||||
|
|
||||||
// #include "qotherheader.h"
|
// #include "qotherheader.h"
|
||||||
// // implement removed functions from qotherheader.h
|
// // implement removed functions from qotherheader.h
|
||||||
// order sections alphabetically to reduce chances of merge conflicts
|
// order sections alphabetically to reduce chances of merge conflicts
|
||||||
|
@ -2331,6 +2331,8 @@ QXmlStreamAttributes QXmlStreamReader::attributes() const
|
|||||||
|
|
||||||
\ingroup xml-tools
|
\ingroup xml-tools
|
||||||
|
|
||||||
|
\compares equality
|
||||||
|
|
||||||
An attribute consists of an optionally empty namespaceUri(), a
|
An attribute consists of an optionally empty namespaceUri(), a
|
||||||
name(), a value(), and an isDefault() attribute.
|
name(), a value(), and an isDefault() attribute.
|
||||||
|
|
||||||
@ -2405,14 +2407,14 @@ QXmlStreamAttribute::QXmlStreamAttribute(const QString &qualifiedName, const QSt
|
|||||||
value following an ATTLIST declaration in the DTD; otherwise
|
value following an ATTLIST declaration in the DTD; otherwise
|
||||||
returns \c false.
|
returns \c false.
|
||||||
*/
|
*/
|
||||||
/*! \fn bool QXmlStreamAttribute::operator==(const QXmlStreamAttribute &other) const
|
/*! \fn bool QXmlStreamAttribute::operator==(const QXmlStreamAttribute &lhs, const QXmlStreamAttribute &rhs)
|
||||||
|
|
||||||
Compares this attribute with \a other and returns \c true if they are
|
Compares \a lhs attribute with \a rhs and returns \c true if they are
|
||||||
equal; otherwise returns \c false.
|
equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
/*! \fn bool QXmlStreamAttribute::operator!=(const QXmlStreamAttribute &other) const
|
/*! \fn bool QXmlStreamAttribute::operator!=(const QXmlStreamAttribute &lhs, const QXmlStreamAttribute &rhs)
|
||||||
|
|
||||||
Compares this attribute with \a other and returns \c true if they are
|
Compares \a lhs attribute with \a rhs and returns \c true if they are
|
||||||
not equal; otherwise returns \c false.
|
not equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2461,6 +2463,8 @@ QXmlStreamAttribute::QXmlStreamAttribute(const QString &qualifiedName, const QSt
|
|||||||
|
|
||||||
\ingroup xml-tools
|
\ingroup xml-tools
|
||||||
|
|
||||||
|
\compares equality
|
||||||
|
|
||||||
An notation declaration consists of a name(), a systemId(), and a publicId().
|
An notation declaration consists of a name(), a systemId(), and a publicId().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2484,14 +2488,14 @@ Returns the system identifier.
|
|||||||
Returns the public identifier.
|
Returns the public identifier.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \fn inline bool QXmlStreamNotationDeclaration::operator==(const QXmlStreamNotationDeclaration &other) const
|
/*! \fn inline bool QXmlStreamNotationDeclaration::operator==(const QXmlStreamNotationDeclaration &lhs, const QXmlStreamNotationDeclaration &rhs)
|
||||||
|
|
||||||
Compares this notation declaration with \a other and returns \c true
|
Compares \a lhs notation declaration with \a rhs and returns \c true
|
||||||
if they are equal; otherwise returns \c false.
|
if they are equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
/*! \fn inline bool QXmlStreamNotationDeclaration::operator!=(const QXmlStreamNotationDeclaration &other) const
|
/*! \fn inline bool QXmlStreamNotationDeclaration::operator!=(const QXmlStreamNotationDeclaration &lhs, const QXmlStreamNotationDeclaration &rhs)
|
||||||
|
|
||||||
Compares this notation declaration with \a other and returns \c true
|
Compares \a lhs notation declaration with \a rhs and returns \c true
|
||||||
if they are not equal; otherwise returns \c false.
|
if they are not equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2511,16 +2515,18 @@ Returns the public identifier.
|
|||||||
|
|
||||||
\ingroup xml-tools
|
\ingroup xml-tools
|
||||||
|
|
||||||
|
\compares equality
|
||||||
|
|
||||||
An namespace declaration consists of a prefix() and a namespaceUri().
|
An namespace declaration consists of a prefix() and a namespaceUri().
|
||||||
*/
|
*/
|
||||||
/*! \fn inline bool QXmlStreamNamespaceDeclaration::operator==(const QXmlStreamNamespaceDeclaration &other) const
|
/*! \fn inline bool QXmlStreamNamespaceDeclaration::operator==(const QXmlStreamNamespaceDeclaration &lhs, const QXmlStreamNamespaceDeclaration &rhs)
|
||||||
|
|
||||||
Compares this namespace declaration with \a other and returns \c true
|
Compares \a lhs namespace declaration with \a rhs and returns \c true
|
||||||
if they are equal; otherwise returns \c false.
|
if they are equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
/*! \fn inline bool QXmlStreamNamespaceDeclaration::operator!=(const QXmlStreamNamespaceDeclaration &other) const
|
/*! \fn inline bool QXmlStreamNamespaceDeclaration::operator!=(const QXmlStreamNamespaceDeclaration &lhs, const QXmlStreamNamespaceDeclaration &rhs)
|
||||||
|
|
||||||
Compares this namespace declaration with \a other and returns \c true
|
Compares \a lhs namespace declaration with \a rhs and returns \c true
|
||||||
if they are not equal; otherwise returns \c false.
|
if they are not equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -2577,6 +2583,7 @@ Returns the namespaceUri.
|
|||||||
|
|
||||||
\ingroup xml-tools
|
\ingroup xml-tools
|
||||||
|
|
||||||
|
\compares equality
|
||||||
An entity declaration consists of a name(), a notationName(), a
|
An entity declaration consists of a name(), a notationName(), a
|
||||||
systemId(), a publicId(), and a value().
|
systemId(), a publicId(), and a value().
|
||||||
*/
|
*/
|
||||||
@ -2609,14 +2616,14 @@ Returns the public identifier.
|
|||||||
Returns the entity's value.
|
Returns the entity's value.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/*! \fn bool QXmlStreamEntityDeclaration::operator==(const QXmlStreamEntityDeclaration &other) const
|
/*! \fn bool QXmlStreamEntityDeclaration::operator==(const QXmlStreamEntityDeclaration &lhs, const QXmlStreamEntityDeclaration &rhs)
|
||||||
|
|
||||||
Compares this entity declaration with \a other and returns \c true if
|
Compares \a lhs entity declaration with \a rhs and returns \c true if
|
||||||
they are equal; otherwise returns \c false.
|
they are equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
/*! \fn bool QXmlStreamEntityDeclaration::operator!=(const QXmlStreamEntityDeclaration &other) const
|
/*! \fn bool QXmlStreamEntityDeclaration::operator!=(const QXmlStreamEntityDeclaration &lhs, const QXmlStreamEntityDeclaration &rhs)
|
||||||
|
|
||||||
Compares this entity declaration with \a other and returns \c true if
|
Compares \a lhs entity declaration with \a rhs and returns \c true if
|
||||||
they are not equal; otherwise returns \c false.
|
they are not equal; otherwise returns \c false.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
#if QT_CONFIG(xmlstream)
|
#if QT_CONFIG(xmlstream)
|
||||||
|
|
||||||
|
#include <QtCore/qcompare.h>
|
||||||
#include <QtCore/qlist.h>
|
#include <QtCore/qlist.h>
|
||||||
#include <QtCore/qscopedpointer.h>
|
#include <QtCore/qscopedpointer.h>
|
||||||
#include <QtCore/qstring.h>
|
#include <QtCore/qstring.h>
|
||||||
@ -58,13 +59,23 @@ public:
|
|||||||
}
|
}
|
||||||
inline QStringView value() const { return m_value; }
|
inline QStringView value() const { return m_value; }
|
||||||
inline bool isDefault() const { return m_isDefault; }
|
inline bool isDefault() const { return m_isDefault; }
|
||||||
inline bool operator==(const QXmlStreamAttribute &other) const {
|
#if QT_CORE_REMOVED_SINCE(6, 8)
|
||||||
return (value() == other.value()
|
inline bool operator==(const QXmlStreamAttribute &other) const
|
||||||
&& (namespaceUri().isNull() ? (qualifiedName() == other.qualifiedName())
|
{ return comparesEqual(*this, other); }
|
||||||
: (namespaceUri() == other.namespaceUri() && name() == other.name())));
|
|
||||||
}
|
|
||||||
inline bool operator!=(const QXmlStreamAttribute &other) const
|
inline bool operator!=(const QXmlStreamAttribute &other) const
|
||||||
{ return !operator==(other); }
|
{ return !operator==(other); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend bool comparesEqual(const QXmlStreamAttribute &lhs,
|
||||||
|
const QXmlStreamAttribute &rhs) noexcept
|
||||||
|
{
|
||||||
|
return (lhs.value() == rhs.value()
|
||||||
|
&& (lhs.namespaceUri().isNull() ? (lhs.qualifiedName() == rhs.qualifiedName())
|
||||||
|
: (lhs.namespaceUri() == rhs.namespaceUri()
|
||||||
|
&& lhs.name() == rhs.name())));
|
||||||
|
}
|
||||||
|
Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamAttribute)
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_RELOCATABLE_TYPE);
|
Q_DECLARE_TYPEINFO(QXmlStreamAttribute, Q_RELOCATABLE_TYPE);
|
||||||
@ -111,11 +122,19 @@ public:
|
|||||||
|
|
||||||
inline QStringView prefix() const { return m_prefix; }
|
inline QStringView prefix() const { return m_prefix; }
|
||||||
inline QStringView namespaceUri() const { return m_namespaceUri; }
|
inline QStringView namespaceUri() const { return m_namespaceUri; }
|
||||||
inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const {
|
#if QT_CORE_REMOVED_SINCE(6, 8)
|
||||||
return (prefix() == other.prefix() && namespaceUri() == other.namespaceUri());
|
inline bool operator==(const QXmlStreamNamespaceDeclaration &other) const
|
||||||
}
|
{ return comparesEqual(*this, other); }
|
||||||
inline bool operator!=(const QXmlStreamNamespaceDeclaration &other) const
|
inline bool operator!=(const QXmlStreamNamespaceDeclaration &other) const
|
||||||
{ return !operator==(other); }
|
{ return !operator==(other); }
|
||||||
|
#endif
|
||||||
|
private:
|
||||||
|
friend bool comparesEqual(const QXmlStreamNamespaceDeclaration &lhs,
|
||||||
|
const QXmlStreamNamespaceDeclaration &rhs) noexcept
|
||||||
|
{
|
||||||
|
return (lhs.prefix() == rhs.prefix() && lhs.namespaceUri() == rhs.namespaceUri());
|
||||||
|
}
|
||||||
|
Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamNamespaceDeclaration)
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_TYPEINFO(QXmlStreamNamespaceDeclaration, Q_RELOCATABLE_TYPE);
|
Q_DECLARE_TYPEINFO(QXmlStreamNamespaceDeclaration, Q_RELOCATABLE_TYPE);
|
||||||
@ -131,12 +150,20 @@ public:
|
|||||||
inline QStringView name() const { return m_name; }
|
inline QStringView name() const { return m_name; }
|
||||||
inline QStringView systemId() const { return m_systemId; }
|
inline QStringView systemId() const { return m_systemId; }
|
||||||
inline QStringView publicId() const { return m_publicId; }
|
inline QStringView publicId() const { return m_publicId; }
|
||||||
inline bool operator==(const QXmlStreamNotationDeclaration &other) const {
|
#if QT_CORE_REMOVED_SINCE(6, 8)
|
||||||
return (name() == other.name() && systemId() == other.systemId()
|
inline bool operator==(const QXmlStreamNotationDeclaration &other) const
|
||||||
&& publicId() == other.publicId());
|
{ return comparesEqual(*this, other); }
|
||||||
}
|
|
||||||
inline bool operator!=(const QXmlStreamNotationDeclaration &other) const
|
inline bool operator!=(const QXmlStreamNotationDeclaration &other) const
|
||||||
{ return !operator==(other); }
|
{ return !operator==(other); }
|
||||||
|
#endif
|
||||||
|
private:
|
||||||
|
friend bool comparesEqual(const QXmlStreamNotationDeclaration &lhs,
|
||||||
|
const QXmlStreamNotationDeclaration &rhs) noexcept
|
||||||
|
{
|
||||||
|
return (lhs.name() == rhs.name() && lhs.systemId() == rhs.systemId()
|
||||||
|
&& lhs.publicId() == rhs.publicId());
|
||||||
|
}
|
||||||
|
Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamNotationDeclaration)
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_TYPEINFO(QXmlStreamNotationDeclaration, Q_RELOCATABLE_TYPE);
|
Q_DECLARE_TYPEINFO(QXmlStreamNotationDeclaration, Q_RELOCATABLE_TYPE);
|
||||||
@ -154,15 +181,24 @@ public:
|
|||||||
inline QStringView systemId() const { return m_systemId; }
|
inline QStringView systemId() const { return m_systemId; }
|
||||||
inline QStringView publicId() const { return m_publicId; }
|
inline QStringView publicId() const { return m_publicId; }
|
||||||
inline QStringView value() const { return m_value; }
|
inline QStringView value() const { return m_value; }
|
||||||
inline bool operator==(const QXmlStreamEntityDeclaration &other) const {
|
#if QT_CORE_REMOVED_SINCE(6, 8)
|
||||||
return (name() == other.name()
|
inline bool operator==(const QXmlStreamEntityDeclaration &other) const
|
||||||
&& notationName() == other.notationName()
|
{ return comparesEqual(*this, other); }
|
||||||
&& systemId() == other.systemId()
|
|
||||||
&& publicId() == other.publicId()
|
|
||||||
&& value() == other.value());
|
|
||||||
}
|
|
||||||
inline bool operator!=(const QXmlStreamEntityDeclaration &other) const
|
inline bool operator!=(const QXmlStreamEntityDeclaration &other) const
|
||||||
{ return !operator==(other); }
|
{ return !operator==(other); }
|
||||||
|
#endif
|
||||||
|
|
||||||
|
private:
|
||||||
|
friend bool comparesEqual(const QXmlStreamEntityDeclaration &lhs,
|
||||||
|
const QXmlStreamEntityDeclaration &rhs) noexcept
|
||||||
|
{
|
||||||
|
return (lhs.name() == rhs.name()
|
||||||
|
&& lhs.notationName() == rhs.notationName()
|
||||||
|
&& lhs.systemId() == rhs.systemId()
|
||||||
|
&& lhs.publicId() == rhs.publicId()
|
||||||
|
&& lhs.value() == rhs.value());
|
||||||
|
}
|
||||||
|
Q_DECLARE_EQUALITY_COMPARABLE(QXmlStreamEntityDeclaration)
|
||||||
};
|
};
|
||||||
|
|
||||||
Q_DECLARE_TYPEINFO(QXmlStreamEntityDeclaration, Q_RELOCATABLE_TYPE);
|
Q_DECLARE_TYPEINFO(QXmlStreamEntityDeclaration, Q_RELOCATABLE_TYPE);
|
||||||
|
@ -26,6 +26,7 @@ qt_internal_add_test(tst_qxmlstream
|
|||||||
LIBRARIES
|
LIBRARIES
|
||||||
Qt::Network
|
Qt::Network
|
||||||
Qt::CorePrivate
|
Qt::CorePrivate
|
||||||
|
Qt::TestPrivate
|
||||||
TESTDATA
|
TESTDATA
|
||||||
${test_data}
|
${test_data}
|
||||||
${tokenError}
|
${tokenError}
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include <QNetworkReply>
|
#include <QNetworkReply>
|
||||||
#include <QNetworkRequest>
|
#include <QNetworkRequest>
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
|
#include <QtTest/private/qcomparisontesthelper_p.h>
|
||||||
#include <QUrl>
|
#include <QUrl>
|
||||||
#include <QXmlStreamReader>
|
#include <QXmlStreamReader>
|
||||||
#include <QBuffer>
|
#include <QBuffer>
|
||||||
@ -542,6 +543,7 @@ public:
|
|||||||
private slots:
|
private slots:
|
||||||
void initTestCase();
|
void initTestCase();
|
||||||
void cleanupTestCase();
|
void cleanupTestCase();
|
||||||
|
void compareCompiles();
|
||||||
void runTestSuite();
|
void runTestSuite();
|
||||||
void reportFailures() const;
|
void reportFailures() const;
|
||||||
void reportFailures_data();
|
void reportFailures_data();
|
||||||
@ -593,6 +595,8 @@ private slots:
|
|||||||
|
|
||||||
void tokenErrorHandling_data() const;
|
void tokenErrorHandling_data() const;
|
||||||
void tokenErrorHandling() const;
|
void tokenErrorHandling() const;
|
||||||
|
void checkStreamNotationDeclarations() const;
|
||||||
|
void checkStreamEntityDeclarations() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static QByteArray readFile(const QString &filename);
|
static QByteArray readFile(const QString &filename);
|
||||||
@ -636,6 +640,14 @@ void tst_QXmlStream::cleanupTestCase()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QXmlStream::compareCompiles()
|
||||||
|
{
|
||||||
|
QTestPrivate::testEqualityOperatorsCompile<QXmlStreamAttribute>();
|
||||||
|
QTestPrivate::testEqualityOperatorsCompile<QXmlStreamNamespaceDeclaration>();
|
||||||
|
QTestPrivate::testEqualityOperatorsCompile<QXmlStreamNotationDeclaration>();
|
||||||
|
QTestPrivate::testEqualityOperatorsCompile<QXmlStreamEntityDeclaration>();
|
||||||
|
}
|
||||||
|
|
||||||
void tst_QXmlStream::runTestSuite()
|
void tst_QXmlStream::runTestSuite()
|
||||||
{
|
{
|
||||||
QFile file(m_tempDir.filePath(catalogFile));
|
QFile file(m_tempDir.filePath(catalogFile));
|
||||||
@ -886,12 +898,17 @@ void tst_QXmlStream::addExtraNamespaceDeclarations()
|
|||||||
}
|
}
|
||||||
{
|
{
|
||||||
QXmlStreamReader xml(data);
|
QXmlStreamReader xml(data);
|
||||||
xml.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration("undeclared", "blabla"));
|
QXmlStreamNamespaceDeclaration undeclared("undeclared", "blabla");
|
||||||
xml.addExtraNamespaceDeclaration(QXmlStreamNamespaceDeclaration("undeclared_too", "foofoo"));
|
QXmlStreamNamespaceDeclaration undeclared_too("undeclared_too", "blabla");
|
||||||
|
xml.addExtraNamespaceDeclaration(undeclared);
|
||||||
|
xml.addExtraNamespaceDeclaration(undeclared_too);
|
||||||
while (!xml.atEnd()) {
|
while (!xml.atEnd()) {
|
||||||
xml.readNext();
|
xml.readNext();
|
||||||
}
|
}
|
||||||
QVERIFY2(!xml.hasError(), xml.errorString().toLatin1().constData());
|
QVERIFY2(!xml.hasError(), xml.errorString().toLatin1().constData());
|
||||||
|
QT_TEST_EQUALITY_OPS(undeclared, undeclared_too, false);
|
||||||
|
undeclared = undeclared_too;
|
||||||
|
QT_TEST_EQUALITY_OPS(undeclared, undeclared_too, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1346,6 +1363,15 @@ void tst_QXmlStream::hasAttribute() const
|
|||||||
reader.readNext();
|
reader.readNext();
|
||||||
|
|
||||||
QVERIFY(!reader.hasError());
|
QVERIFY(!reader.hasError());
|
||||||
|
|
||||||
|
QXmlStreamAttribute attrValue1(QLatin1String("http://example.com/"), QString::fromLatin1("attr1"));
|
||||||
|
QXmlStreamAttribute attrValue2 = atts.at(0);
|
||||||
|
QT_TEST_EQUALITY_OPS(atts.at(0), QXmlStreamAttribute(), false);
|
||||||
|
QT_TEST_EQUALITY_OPS(atts.at(0), attrValue1, false);
|
||||||
|
QT_TEST_EQUALITY_OPS(atts.at(0), attrValue2, true);
|
||||||
|
QT_TEST_EQUALITY_OPS(attrValue1, attrValue2, false);
|
||||||
|
attrValue1 = attrValue2;
|
||||||
|
QT_TEST_EQUALITY_OPS(attrValue1, attrValue2, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tst_QXmlStream::writeWithUtf8Codec() const
|
void tst_QXmlStream::writeWithUtf8Codec() const
|
||||||
@ -1927,4 +1953,52 @@ void tst_QXmlStream::tokenErrorHandling() const
|
|||||||
QVERIFY(reader.errorString().contains(errorKeyWord));
|
QVERIFY(reader.errorString().contains(errorKeyWord));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void tst_QXmlStream::checkStreamNotationDeclarations() const
|
||||||
|
{
|
||||||
|
QString fileName("12.xml");
|
||||||
|
const QDir dir(QFINDTESTDATA("data"));
|
||||||
|
QFile file(dir.absoluteFilePath(fileName));
|
||||||
|
if (!file.exists())
|
||||||
|
QSKIP(QObject::tr("Testfile %1 not found.").arg(fileName).toUtf8().constData());
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
QXmlStreamReader reader(&file);
|
||||||
|
while (!reader.atEnd())
|
||||||
|
reader.readNext();
|
||||||
|
|
||||||
|
QVERIFY(!reader.hasError());
|
||||||
|
QXmlStreamNotationDeclaration notation1, notation2, notation3;
|
||||||
|
QT_TEST_EQUALITY_OPS(notation1, notation2, true);
|
||||||
|
const auto notationDeclarations = reader.notationDeclarations();
|
||||||
|
if (notationDeclarations.count() >= 2) {
|
||||||
|
notation1 = notationDeclarations.at(0);
|
||||||
|
notation2 = notationDeclarations.at(1);
|
||||||
|
notation3 = notationDeclarations.at(1);
|
||||||
|
}
|
||||||
|
QT_TEST_EQUALITY_OPS(notation1, notation2, false);
|
||||||
|
QT_TEST_EQUALITY_OPS(notation3, notation2, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void tst_QXmlStream::checkStreamEntityDeclarations() const
|
||||||
|
{
|
||||||
|
QString fileName("5.xml");
|
||||||
|
const QDir dir(QFINDTESTDATA("data"));
|
||||||
|
QFile file(dir.absoluteFilePath(fileName));
|
||||||
|
if (!file.exists())
|
||||||
|
QSKIP(QObject::tr("Testfile %1 not found.").arg(fileName).toUtf8().constData());
|
||||||
|
file.open(QIODevice::ReadOnly);
|
||||||
|
QXmlStreamReader reader(&file);
|
||||||
|
while (!reader.atEnd())
|
||||||
|
reader.readNext();
|
||||||
|
|
||||||
|
QVERIFY(!reader.hasError());
|
||||||
|
QXmlStreamEntityDeclaration entity;
|
||||||
|
QT_TEST_EQUALITY_OPS(entity, QXmlStreamEntityDeclaration(), true);
|
||||||
|
|
||||||
|
const auto entityDeclarations = reader.entityDeclarations();
|
||||||
|
if (entityDeclarations.count() >= 2) {
|
||||||
|
entity = entityDeclarations.at(1);
|
||||||
|
QT_TEST_EQUALITY_OPS(entityDeclarations.at(0), entityDeclarations.at(1), false);
|
||||||
|
QT_TEST_EQUALITY_OPS(entity, entityDeclarations.at(1), true);
|
||||||
|
}
|
||||||
|
}
|
||||||
#include "tst_qxmlstream.moc"
|
#include "tst_qxmlstream.moc"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user