/* * Copyright (C) 2010 Bolloré telecom * * Author: * Jeremy Lainé * * Source: * http://code.google.com/p/qxmpp * * This file is a part of QXmpp library. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * */ #include #include #include #include #include #include "QXmppMessage.h" #include "QXmppPresence.h" #include "tests.h" static void parsePacket(QXmppPacket &packet, const QByteArray &xml) { //qDebug() << "parsing" << xml; QDomDocument doc; QCOMPARE(doc.setContent(xml, true), true); QDomElement element = doc.documentElement(); packet.parse(element); } static void serializePacket(QXmppPacket &packet, const QByteArray &xml) { QBuffer buffer; buffer.open(QIODevice::ReadWrite); QXmlStreamWriter writer(&buffer); packet.toXml(&writer); //qDebug() << "writing" << buffer.data(); QCOMPARE(buffer.data(), xml); } void TestPackets::testMessage() { const QByteArray xml( ""); QXmppMessage message; parsePacket(message, xml); QCOMPARE(message.to(), QString("foo@example.com/QXmpp")); QCOMPARE(message.from(), QString("bar@example.com/QXmpp")); serializePacket(message, xml); } void TestPackets::testMessageFull() { const QByteArray xml( "" "test subject" "test body" "test thread" "" ""); QXmppMessage message; parsePacket(message, xml); QCOMPARE(message.to(), QString("foo@example.com/QXmpp")); QCOMPARE(message.from(), QString("bar@example.com/QXmpp")); QCOMPARE(message.type(), QXmppMessage::Normal); QCOMPARE(message.body(), QString("test body")); QCOMPARE(message.subject(), QString("test subject")); QCOMPARE(message.thread(), QString("test thread")); QCOMPARE(message.state(), QXmppMessage::Composing); serializePacket(message, xml); } void TestPackets::testMessageDelay() { const QByteArray xml( "" "" ""); QXmppMessage message; parsePacket(message, xml); QCOMPARE(message.stamp(), QDateTime(QDate(2010, 06, 29), QTime(8, 23, 6), Qt::UTC)); serializePacket(message, xml); } void TestPackets::testMessageLegacyDelay() { const QByteArray xml( "" "" ""); QXmppMessage message; parsePacket(message, xml); QCOMPARE(message.stamp(), QDateTime(QDate(2010, 06, 29), QTime(8, 23, 6), Qt::UTC)); serializePacket(message, xml); } void TestPackets::testPresence() { const QByteArray xml( ""); QXmppPresence presence; parsePacket(presence, xml); QCOMPARE(presence.to(), QString("foo@example.com/QXmpp")); QCOMPARE(presence.from(), QString("bar@example.com/QXmpp")); serializePacket(presence, xml); } void TestPackets::testPresenceFull() { const QByteArray xml( "" "away" "In a meeting" "5" "" ); QXmppPresence presence; parsePacket(presence, xml); QCOMPARE(presence.to(), QString("foo@example.com/QXmpp")); QCOMPARE(presence.from(), QString("bar@example.com/QXmpp")); QCOMPARE(presence.status().type(), QXmppPresence::Status::Away); QCOMPARE(presence.status().statusText(), QString("In a meeting")); QCOMPARE(presence.status().priority(), 5); serializePacket(presence, xml); } int main(int argc, char *argv[]) { QCoreApplication app(argc, argv); // run tests int errors = 0; TestPackets testPackets; errors += QTest::qExec(&testPackets); if (errors) { qWarning() << "Total failed tests:" << errors; return EXIT_FAILURE; } return EXIT_SUCCESS; };