summaryrefslogtreecommitdiffstats
path: root/tests/auto/qxml/tst_qxml.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qxml/tst_qxml.cpp')
-rw-r--r--tests/auto/qxml/tst_qxml.cpp217
1 files changed, 217 insertions, 0 deletions
diff --git a/tests/auto/qxml/tst_qxml.cpp b/tests/auto/qxml/tst_qxml.cpp
new file mode 100644
index 0000000..18c54a3
--- /dev/null
+++ b/tests/auto/qxml/tst_qxml.cpp
@@ -0,0 +1,217 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: Qt Software Information (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the either Technology Preview License Agreement or the
+** Beta Release License Agreement.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain
+** additional rights. These rights are described in the Nokia Qt LGPL
+** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
+** package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3.0 as published by the Free Software
+** Foundation and appearing in the file LICENSE.GPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU General Public License version 3.0 requirements will be
+** met: http://www.gnu.org/copyleft/gpl.html.
+**
+** If you are unsure which license is appropriate for your use, please
+** contact the sales department at qt-sales@nokia.com.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <qcoreapplication.h>
+#include <qdebug.h>
+#include <qxml.h>
+
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_QXml : public QObject
+{
+Q_OBJECT
+
+private slots:
+ void getSetCheck();
+ void interpretedAs0D() const;
+};
+
+class MyXmlEntityResolver : public QXmlEntityResolver
+{
+public:
+ MyXmlEntityResolver() : QXmlEntityResolver() {}
+ QString errorString() const { return QString(); }
+ bool resolveEntity(const QString &, const QString &, QXmlInputSource *&) { return false; }
+};
+
+class MyXmlContentHandler : public QXmlContentHandler
+{
+public:
+ MyXmlContentHandler() : QXmlContentHandler() {}
+ bool characters(const QString &) { return false; }
+ bool endDocument() { return false; }
+ bool endElement(const QString &, const QString &, const QString &) { return false; }
+ bool endPrefixMapping(const QString &) { return false; }
+ QString errorString() const { return QString(); }
+ bool ignorableWhitespace(const QString &) { return false; }
+ bool processingInstruction(const QString &, const QString &) { return false; }
+ void setDocumentLocator(QXmlLocator *) { }
+ bool skippedEntity(const QString &) { return false; }
+ bool startDocument() { return false; }
+ bool startElement(const QString &, const QString &, const QString &, const QXmlAttributes &) { return false; }
+ bool startPrefixMapping(const QString &, const QString &) { return false; }
+};
+
+class MyXmlErrorHandler : public QXmlErrorHandler
+{
+public:
+ MyXmlErrorHandler() : QXmlErrorHandler() {}
+ QString errorString() const { return QString(); }
+ bool error(const QXmlParseException &) { return false; }
+ bool fatalError(const QXmlParseException &) { return false; }
+ bool warning(const QXmlParseException &) { return false; }
+};
+
+class MyXmlLexicalHandler : public QXmlLexicalHandler
+{
+public:
+ MyXmlLexicalHandler() : QXmlLexicalHandler() {}
+ bool comment(const QString &) { return false; }
+ bool endCDATA() { return false; }
+ bool endDTD() { return false; }
+ bool endEntity(const QString &) { return false; }
+ QString errorString() const { return QString(); }
+ bool startCDATA() { return false; }
+ bool startDTD(const QString &, const QString &, const QString &) { return false; }
+ bool startEntity(const QString &) { return false; }
+};
+
+class MyXmlDeclHandler : public QXmlDeclHandler
+{
+public:
+ MyXmlDeclHandler() : QXmlDeclHandler() {}
+ bool attributeDecl(const QString &, const QString &, const QString &, const QString &, const QString &) { return false; }
+ QString errorString() const { return QString(); }
+ bool externalEntityDecl(const QString &, const QString &, const QString &) { return false; }
+ bool internalEntityDecl(const QString &, const QString &) { return false; }
+};
+
+// Testing get/set functions
+void tst_QXml::getSetCheck()
+{
+ QXmlSimpleReader obj1;
+ // QXmlEntityResolver* QXmlSimpleReader::entityResolver()
+ // void QXmlSimpleReader::setEntityResolver(QXmlEntityResolver*)
+ MyXmlEntityResolver *var1 = new MyXmlEntityResolver;
+ obj1.setEntityResolver(var1);
+ QCOMPARE(static_cast<QXmlEntityResolver *>(var1), obj1.entityResolver());
+ obj1.setEntityResolver((QXmlEntityResolver *)0);
+ QCOMPARE((QXmlEntityResolver *)0, obj1.entityResolver());
+ delete var1;
+
+ // QXmlContentHandler* QXmlSimpleReader::contentHandler()
+ // void QXmlSimpleReader::setContentHandler(QXmlContentHandler*)
+ MyXmlContentHandler *var2 = new MyXmlContentHandler;
+ obj1.setContentHandler(var2);
+ QCOMPARE(static_cast<QXmlContentHandler *>(var2), obj1.contentHandler());
+ obj1.setContentHandler((QXmlContentHandler *)0);
+ QCOMPARE((QXmlContentHandler *)0, obj1.contentHandler());
+ delete var2;
+
+ // QXmlErrorHandler* QXmlSimpleReader::errorHandler()
+ // void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler*)
+ MyXmlErrorHandler *var3 = new MyXmlErrorHandler;
+ obj1.setErrorHandler(var3);
+ QCOMPARE(static_cast<QXmlErrorHandler *>(var3), obj1.errorHandler());
+ obj1.setErrorHandler((QXmlErrorHandler *)0);
+ QCOMPARE((QXmlErrorHandler *)0, obj1.errorHandler());
+ delete var3;
+
+ // QXmlLexicalHandler* QXmlSimpleReader::lexicalHandler()
+ // void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler*)
+ MyXmlLexicalHandler *var4 = new MyXmlLexicalHandler;
+ obj1.setLexicalHandler(var4);
+ QCOMPARE(static_cast<QXmlLexicalHandler *>(var4), obj1.lexicalHandler());
+ obj1.setLexicalHandler((QXmlLexicalHandler *)0);
+ QCOMPARE((QXmlLexicalHandler *)0, obj1.lexicalHandler());
+ delete var4;
+
+ // QXmlDeclHandler* QXmlSimpleReader::declHandler()
+ // void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler*)
+ MyXmlDeclHandler *var5 = new MyXmlDeclHandler;
+ obj1.setDeclHandler(var5);
+ QCOMPARE(static_cast<QXmlDeclHandler *>(var5), obj1.declHandler());
+ obj1.setDeclHandler((QXmlDeclHandler *)0);
+ QCOMPARE((QXmlDeclHandler *)0, obj1.declHandler());
+ delete var5;
+}
+
+void tst_QXml::interpretedAs0D() const
+{
+ /* See task 172632. */
+
+ class MyHandler : public QXmlDefaultHandler
+ {
+ public:
+ virtual bool startElement(const QString &namespaceURI,
+ const QString &localName,
+ const QString &qName,
+ const QXmlAttributes &atts)
+ {
+ Q_UNUSED(namespaceURI);
+ Q_UNUSED(localName);
+ Q_UNUSED(qName);
+ attrName = atts.qName(0);
+ attrCount = atts.count();
+ return true;
+ }
+
+ QString attrName;
+ int attrCount;
+ };
+
+ const QString document(QLatin1String("<element ") +
+ QChar(0x010D) +
+ QLatin1String("reated-by=\"an attr value\"/>"));
+
+ QFile f("0x010D.xml");
+ QVERIFY(f.open(QIODevice::ReadOnly));
+ QXmlInputSource data(&f);
+
+ QXmlSimpleReader reader;
+
+ MyHandler myHandler;
+ reader.setContentHandler(&myHandler);
+ reader.setErrorHandler(&myHandler);
+
+ QVERIFY(reader.parse(&data));
+
+ QCOMPARE(myHandler.attrCount, 1);
+ QCOMPARE(myHandler.attrName, QChar(0x010D) + QString::fromLatin1("reated-by"));
+}
+
+QTEST_MAIN(tst_QXml)
+#include "tst_qxml.moc"