From 5b3e7c8dfa4856b04013ace24d19bbd104dc3bd0 Mon Sep 17 00:00:00 2001 From: Kevin Ottens Date: Fri, 30 Nov 2012 11:51:05 +0100 Subject: Generate the introspection string during parsing Commit 0696071316b3dacb8d1ca15a269e4f4215642b9d moved away from QDom but also lost the ability to fill the introspection field of the created QDBusIntrospection::Interface instances. This commit now generate the string again as we proceed with the QXmlStreamReader based parsing. Task-number: QTBUG-26668 Change-Id: I8f406e1f4e9d3e667a8557db69da36cac369ba4f Reviewed-by: Thiago Macieira --- tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro | 2 +- .../dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp | 99 ++++++++++++++++------ 2 files changed, 72 insertions(+), 29 deletions(-) (limited to 'tests/auto/dbus') diff --git a/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro b/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro index 4b3415612a..a7186c341b 100644 --- a/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro +++ b/tests/auto/dbus/qdbusxmlparser/qdbusxmlparser.pro @@ -1,5 +1,5 @@ CONFIG += testcase TARGET = tst_qdbusxmlparser -QT = core-private dbus-private testlib +QT = core-private dbus-private xml testlib SOURCES += tst_qdbusxmlparser.cpp DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp index 5f03600b89..35cf989753 100644 --- a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp +++ b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp @@ -44,6 +44,7 @@ #include #include #include +#include #define USE_PRIVATE_CODE #include "../qdbusmarshall/common.h" @@ -54,6 +55,7 @@ class tst_QDBusXmlParser: public QObject private: void parsing_common(const QString&); + QString clean_xml(const QString&); private slots: void parsing_data(); @@ -75,36 +77,58 @@ void tst_QDBusXmlParser::parsing_data() QTest::addColumn("interfaceCount"); QTest::addColumn("objectCount"); QTest::addColumn("annotationCount"); + QTest::addColumn("introspection"); - QTest::newRow("null") << QString() << 0 << 0 << 0; - QTest::newRow("empty") << QString("") << 0 << 0 << 0; + QStringList introspection; + + QTest::newRow("null") << QString() << 0 << 0 << 0 << introspection; + QTest::newRow("empty") << QString("") << 0 << 0 << 0 << introspection; - QTest::newRow("junk") << "" << 0 << 0 << 0; + QTest::newRow("junk") << "" << 0 << 0 << 0 << introspection; QTest::newRow("interface-inside-junk") << "" - << 0 << 0 << 0; + << 0 << 0 << 0 << introspection; QTest::newRow("object-inside-junk") << "" - << 0 << 0 << 0; + << 0 << 0 << 0 << introspection; - QTest::newRow("zero-interfaces") << "" << 0 << 0 << 0; - QTest::newRow("one-interface") << "" << 1 << 0 << 0; + QTest::newRow("zero-interfaces") << "" << 0 << 0 << 0 << introspection; - + introspection << ""; + QTest::newRow("one-interface") << "" + << 1 << 0 << 0 << introspection; + introspection.clear(); + + introspection << "" + << ""; QTest::newRow("two-interfaces") << "" "" - << 2 << 0 << 0; + << 2 << 0 << 0 << introspection; + introspection.clear(); - QTest::newRow("one-object") << "" << 0 << 1 << 0; - QTest::newRow("two-objects") << "" << 0 << 2 << 0; + QTest::newRow("one-object") << "" + << 0 << 1 << 0 << introspection; + QTest::newRow("two-objects") << "" + << 0 << 2 << 0 << introspection; - QTest::newRow("i1o1") << "" << 1 << 1 << 0; + introspection << ""; + QTest::newRow("i1o1") << "" + << 1 << 1 << 0 << introspection; + introspection.clear(); + introspection << "" + " " + ""; QTest::newRow("one-interface-annotated") << "" "" - "" << 1 << 0 << 1; + "" << 1 << 0 << 1 << introspection; + introspection.clear(); + + + introspection << ""; QTest::newRow("one-interface-docnamespace") << "" "" - "" << 1 << 0 << 0; + "" << 1 << 0 << 0 << introspection; + introspection.clear(); } void tst_QDBusXmlParser::parsing_common(const QString &xmlData) @@ -114,20 +138,36 @@ void tst_QDBusXmlParser::parsing_common(const QString &xmlData) QFETCH(int, interfaceCount); QFETCH(int, objectCount); QFETCH(int, annotationCount); + QFETCH(QStringList, introspection); QCOMPARE(obj.interfaces.count(), interfaceCount); QCOMPARE(obj.childObjects.count(), objectCount); QCOMPARE(QDBusIntrospection::parseInterface(xmlData).annotations.count(), annotationCount); + QDBusIntrospection::Interfaces ifaces = QDBusIntrospection::parseInterfaces(xmlData); + // also verify the naming int i = 0; - foreach (QString name, obj.interfaces) - QCOMPARE(name, QString("iface.iface%1").arg(++i)); + foreach (QString name, obj.interfaces) { + const QString expectedName = QString("iface.iface%1").arg(i+1); + QCOMPARE(name, expectedName); + + const QString expectedIntrospection = clean_xml(introspection.at(i++)); + const QString resultIntrospection = clean_xml(ifaces.value(expectedName)->introspection); + QCOMPARE(resultIntrospection, expectedIntrospection); + } i = 0; foreach (QString name, obj.childObjects) QCOMPARE(name, QString("obj%1").arg(++i)); } +QString tst_QDBusXmlParser::clean_xml(const QString &xmlData) +{ + QDomDocument dom; + dom.setContent(xmlData); + return dom.toString(); +} + void tst_QDBusXmlParser::parsing() { QFETCH(QString, xmlData); @@ -304,10 +344,10 @@ void tst_QDBusXmlParser::methods_data() void tst_QDBusXmlParser::methods() { - QString xmlHeader = "" - "", - xmlFooter = "" - ""; + QString intHeader = "", + intFooter = "", + xmlHeader = "" + intHeader, + xmlFooter = intFooter + ""; QFETCH(QString, xmlDataFragment); @@ -315,6 +355,7 @@ void tst_QDBusXmlParser::methods() QDBusIntrospection::parseInterface(xmlHeader + xmlDataFragment + xmlFooter); QCOMPARE(iface.name, QString("iface.iface1")); + QCOMPARE(clean_xml(iface.introspection), clean_xml(intHeader + xmlDataFragment + intFooter)); QFETCH(MethodMap, methodMap); MethodMap parsedMap = iface.methods; @@ -417,10 +458,10 @@ void tst_QDBusXmlParser::signals__data() void tst_QDBusXmlParser::signals_() { - QString xmlHeader = "" - "", - xmlFooter = "" - ""; + QString intHeader = "", + intFooter = "", + xmlHeader = "" + intHeader, + xmlFooter = intFooter + ""; QFETCH(QString, xmlDataFragment); @@ -428,6 +469,7 @@ void tst_QDBusXmlParser::signals_() QDBusIntrospection::parseInterface(xmlHeader + xmlDataFragment + xmlFooter); QCOMPARE(iface.name, QString("iface.iface1")); + QCOMPARE(clean_xml(iface.introspection), clean_xml(intHeader + xmlDataFragment + intFooter)); QFETCH(SignalMap, signalMap); SignalMap parsedMap = iface.signals_; @@ -506,10 +548,10 @@ void tst_QDBusXmlParser::properties_data() void tst_QDBusXmlParser::properties() { - QString xmlHeader = "" - "", - xmlFooter = "" - ""; + QString intHeader = "", + intFooter = "", + xmlHeader = "" + intHeader, + xmlFooter = intFooter + ""; QFETCH(QString, xmlDataFragment); @@ -517,6 +559,7 @@ void tst_QDBusXmlParser::properties() QDBusIntrospection::parseInterface(xmlHeader + xmlDataFragment + xmlFooter); QCOMPARE(iface.name, QString("iface.iface1")); + QCOMPARE(clean_xml(iface.introspection), clean_xml(intHeader + xmlDataFragment + intFooter)); QFETCH(PropertyMap, propertyMap); PropertyMap parsedMap = iface.properties; -- cgit v1.2.3