aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZam-mbpr <love8879201@gmail.com>2015-05-15 17:18:15 +0800
committerJeremy Lainé <jeremy.laine@m4x.org>2015-06-04 08:05:21 +0200
commit4a350838696d32fcacfba05c5bf4e0e54ed02694 (patch)
treeaa542efe31e6d6b75c1bb2ad8e295dc5ad2d378b
parent7bdf1406410686a46bbfe95a2f7855a4a6beffdc (diff)
downloadqxmpp-4a350838696d32fcacfba05c5bf4e0e54ed02694.tar.gz
[add] unit test [add] comment [update] code order to if else statement
-rw-r--r--src/base/QXmppMessage.cpp32
-rw-r--r--tests/qxmppmessage/tst_qxmppmessage.cpp21
2 files changed, 39 insertions, 14 deletions
diff --git a/src/base/QXmppMessage.cpp b/src/base/QXmppMessage.cpp
index 600fe47c..0ee4be20 100644
--- a/src/base/QXmppMessage.cpp
+++ b/src/base/QXmppMessage.cpp
@@ -501,6 +501,15 @@ void QXmppMessage::parse(const QDomElement &element)
}
d->receiptRequested = element.firstChildElement("request").namespaceURI() == ns_message_receipts;
+ // XEP-0203: Delayed Delivery
+ QDomElement delayElement = element.firstChildElement("delay");
+ if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery)
+ {
+ const QString str = delayElement.attribute("stamp");
+ d->stamp = QXmppUtils::datetimeFromString(str);
+ d->stampType = DelayedDelivery;
+ }
+
// XEP-0224: Attention
d->attentionRequested = element.firstChildElement("attention").namespaceURI() == ns_attention;
@@ -544,11 +553,15 @@ void QXmppMessage::parse(const QDomElement &element)
{
if (xElement.namespaceURI() == ns_legacy_delayed_delivery)
{
- // XEP-0091: Legacy Delayed Delivery
- const QString str = xElement.attribute("stamp");
- d->stamp = QDateTime::fromString(str, "yyyyMMddThh:mm:ss");
- d->stamp.setTimeSpec(Qt::UTC);
- d->stampType = LegacyDelayedDelivery;
+ // if XEP-0203 exists, XEP-0091 has no need to parse because XEP-0091 is no more standard protocol)
+ if (d->stamp.isNull())
+ {
+ // XEP-0091: Legacy Delayed Delivery
+ const QString str = xElement.attribute("stamp");
+ d->stamp = QDateTime::fromString(str, "yyyyMMddThh:mm:ss");
+ d->stamp.setTimeSpec(Qt::UTC);
+ d->stampType = LegacyDelayedDelivery;
+ }
} else if (xElement.namespaceURI() == ns_conference) {
// XEP-0249: Direct MUC Invitations
d->mucInvitationJid = xElement.attribute("jid");
@@ -566,15 +579,6 @@ void QXmppMessage::parse(const QDomElement &element)
xElement = xElement.nextSiblingElement();
}
setExtensions(extensions);
-
- // XEP-0203: Delayed Delivery
- QDomElement delayElement = element.firstChildElement("delay");
- if (!delayElement.isNull() && delayElement.namespaceURI() == ns_delayed_delivery)
- {
- const QString str = delayElement.attribute("stamp");
- d->stamp = QXmppUtils::datetimeFromString(str);
- d->stampType = DelayedDelivery;
- }
}
void QXmppMessage::toXml(QXmlStreamWriter *xmlWriter) const
diff --git a/tests/qxmppmessage/tst_qxmppmessage.cpp b/tests/qxmppmessage/tst_qxmppmessage.cpp
index 1ec4f18b..6be13140 100644
--- a/tests/qxmppmessage/tst_qxmppmessage.cpp
+++ b/tests/qxmppmessage/tst_qxmppmessage.cpp
@@ -37,6 +37,7 @@ private slots:
void testMessageReceipt();
void testDelay_data();
void testDelay();
+ void testDelayWithMultipleStamp();
void testExtendedAddresses();
void testMucInvitation();
void testState_data();
@@ -216,6 +217,26 @@ void tst_QXmppMessage::testDelay()
serializePacket(message, xml);
}
+void tst_QXmppMessage::testDelayWithMultipleStamp()
+{
+ // the XEP-0203 should override XEP-0091's value since XEP-0091 was no more standard protocol
+ QByteArray xml(
+ "<message type=\"normal\">"
+ "<delay xmlns=\"urn:xmpp:delay\" stamp=\"2010-06-29T08:23:06.123Z\"/>"
+ "<x xmlns=\"jabber:x:delay\" stamp=\"20100629T08:23:06\"/>"
+ "</message>");
+ QByteArray resultXml(
+ "<message type=\"normal\">"
+ "<delay xmlns=\"urn:xmpp:delay\" stamp=\"2010-06-29T08:23:06.123Z\"/>"
+ "</message>");
+
+ QXmppMessage message;
+ parsePacket(message, xml);
+ qDebug() << message.stamp();
+ QCOMPARE(message.stamp(), QDateTime(QDate(2010, 06, 29), QTime(8, 23, 6, 123), Qt::UTC));
+ serializePacket(message, resultXml);
+}
+
void tst_QXmppMessage::testExtendedAddresses()
{
QByteArray xml(