From 95a9372e5c27e5663893585a73ea80120b9e436c Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Mon, 24 Jun 2013 12:49:06 +0200 Subject: Fix parsing of QNdefMessage::fromByteArray() Multiple NdefRecords were parsed incorrectly because the to-be-added record was never reset when reading the next entry. The added unit test fails without the fix. Task-number: QTBUG-31950 Change-Id: I2f1335b7e2d43000f55dc429524c5b8b87f868d2 Reviewed-by: Fabian Bumberger Reviewed-by: Alex --- tests/auto/qndefmessage/tst_qndefmessage.cpp | 40 ++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) (limited to 'tests') diff --git a/tests/auto/qndefmessage/tst_qndefmessage.cpp b/tests/auto/qndefmessage/tst_qndefmessage.cpp index 476fad28..ba0dcd18 100644 --- a/tests/auto/qndefmessage/tst_qndefmessage.cpp +++ b/tests/auto/qndefmessage/tst_qndefmessage.cpp @@ -61,6 +61,7 @@ public: private slots: void tst_parse_data(); void tst_parse(); + void messageParsingFromByteArray(); }; tst_QNdefMessage::tst_QNdefMessage() @@ -415,6 +416,45 @@ void tst_QNdefMessage::tst_parse() } } +void tst_QNdefMessage::messageParsingFromByteArray() +{ + const QByteArray reference("1234567890"); + QNdefMessage message; + QNdefRecord first; + QVERIFY(first.isEmpty()); + first.setTypeNameFormat(QNdefRecord::Uri); + QVERIFY(first.isEmpty()); + first.setPayload(reference); + QCOMPARE(first.payload(), reference); + QVERIFY(!first.isEmpty()); + QCOMPARE(first.typeNameFormat(), QNdefRecord::Uri); + + message.append(first); + + QNdefRecord second; + + QCOMPARE(second.payload(), QByteArray()); + QVERIFY(second.isEmpty()); + QCOMPARE(second.typeNameFormat(), QNdefRecord::Empty); + + message.append(second); + + QByteArray result = message.toByteArray(); + QNdefMessage messageCopy = QNdefMessage::fromByteArray(result); + QCOMPARE(messageCopy.size(), 2); + + first = messageCopy.at(0); + second = messageCopy.at(1); + + QCOMPARE(first.payload(), reference); + QVERIFY(!first.isEmpty()); + QCOMPARE(first.typeNameFormat(), QNdefRecord::Uri); + QCOMPARE(second.payload(), QByteArray()); + QVERIFY(second.isEmpty()); + QCOMPARE(second.typeNameFormat(), QNdefRecord::Empty); + +} + QTEST_MAIN(tst_QNdefMessage) #include "tst_qndefmessage.moc" -- cgit v1.2.3