diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2013-06-24 12:49:06 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-25 16:02:11 +0200 |
commit | 95a9372e5c27e5663893585a73ea80120b9e436c (patch) | |
tree | e4f63902482363548e1e491804d6687b3caf3da1 /tests | |
parent | 8dad4698d9a01ea6cc322a4bd95eb9de118f5754 (diff) |
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 <fbumberger@rim.com>
Reviewed-by: Alex <alexander.blasche@digia.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/auto/qndefmessage/tst_qndefmessage.cpp | 40 |
1 files changed, 40 insertions, 0 deletions
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" |