From 889f415805e84e3d136f8bc009a81a07d157fed8 Mon Sep 17 00:00:00 2001 From: Jeremy Lainé Date: Mon, 9 Aug 2010 15:35:19 +0000 Subject: add tests for XML RPC --- example/tests/tests.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) (limited to 'example/tests/tests.cpp') diff --git a/example/tests/tests.cpp b/example/tests/tests.cpp index 1f49b274..43a7156d 100644 --- a/example/tests/tests.cpp +++ b/example/tests/tests.cpp @@ -35,6 +35,7 @@ #include "QXmppSession.h" #include "QXmppUtils.h" #include "tests.h" +#include "xmlrpc.h" void TestUtils::testHmac() { @@ -320,6 +321,48 @@ void TestJingle::testRinging() serializePacket(iq, xml); } +static void checkVariant(const QVariant &value, const QByteArray &xml) +{ + // parse + QDomDocument doc; + QCOMPARE(doc.setContent(xml, true), true); + QDomElement element = doc.documentElement(); + QStringList errors; + QVariant test = XMLRPC::demarshall(element, errors); + QCOMPARE(errors, QStringList()); + QCOMPARE(test, value); + + // serialise + QBuffer buffer; + buffer.open(QIODevice::ReadWrite); + QXmlStreamWriter writer(&buffer); + XMLRPC::marshall(&writer, value); + qDebug() << "expect " << xml; + qDebug() << "writing" << buffer.data(); + QCOMPARE(buffer.data(), xml); +} + +void TestXmlRpc::testBool() +{ + // FIXME : XML-RPC spec says we should write "0" or "1" + checkVariant(false, + QByteArray("false")); + checkVariant(true, + QByteArray("true")); +} + +void TestXmlRpc::testDouble() +{ + checkVariant(double(-12.214), + QByteArray("-12.214")); +} + +void TestXmlRpc::testString() +{ + checkVariant(QString("hello world"), + QByteArray("hello world")); +} + int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); @@ -336,6 +379,9 @@ int main(int argc, char *argv[]) TestJingle testJingle; errors += QTest::qExec(&testJingle); + TestXmlRpc testXmlRpc; + errors += QTest::qExec(&testXmlRpc); + if (errors) { qWarning() << "Total failed tests:" << errors; -- cgit v1.2.3