QNdefRecord *NfcModelToNdef::convertCustomFromModel(const int startIndex, int &endIndex) { QNdefRecord* newRecord = new NdefNfcGeoRecord(); newRecord->setTypeNameFormat(QNdefRecord::ExternalRtd); if (m_recordItems[startIndex]->messageType() != NfcTypes::MsgCustom || m_recordItems[startIndex]->recordContent() != NfcTypes::RecordHeader) { return newRecord; } // Start at the next item after the header int curIndex = startIndex + 1; bool reachedRecordEnd = false; bool isEmptyRecord = true; while (curIndex < m_recordItems.size()) { NfcRecordItem* curItem = m_recordItems[curIndex]; switch (curItem->recordContent()) { case NfcTypes::RecordHeader: // Next record starts - quit! reachedRecordEnd = true; break; case NfcTypes::RecordTypeNameFormat: { QNdefRecord::TypeNameFormat recordTnf = (QNdefRecord::TypeNameFormat)curItem->selectedOption(); newRecord->setTypeNameFormat(recordTnf); curIndex ++; break; } case NfcTypes::RecordTypeName: { newRecord->setType(curItem->currentText().toLatin1()); curIndex ++; break; } case NfcTypes::RecordRawPayload: newRecord->setPayload(curItem->currentText().toLatin1()); curIndex ++; isEmptyRecord = false; break; case NfcTypes::RecordId: newRecord->setId(curItem->currentText().toLatin1()); curIndex ++; isEmptyRecord = false; break; default: // Unknown record content that doesn't belong to this record reachedRecordEnd = true; break; } if (reachedRecordEnd) break; //curIndex ++; // Already incremented by convert...() methods. } endIndex = curIndex; //qDebug() << "Custom payload: (" << newRecord->payload().count() << "): " << newRecord->payload(); return newRecord; }
void tst_QNdefRecord::tst_record() { // test empty record { QNdefRecord record; QVERIFY(record.isEmpty()); QCOMPARE(record.typeNameFormat(), QNdefRecord::Empty); QVERIFY(record.type().isEmpty()); QVERIFY(record.id().isEmpty()); QVERIFY(record.payload().isEmpty()); QVERIFY(!record.isRecordType<QNdefNfcTextRecord>()); QVERIFY(!record.isRecordType<QNdefNfcUriRecord>()); QCOMPARE(record, QNdefRecord()); QVERIFY(!(record != QNdefRecord())); } // test type name format { QNdefRecord record; record.setTypeNameFormat(QNdefRecord::Empty); QCOMPARE(record.typeNameFormat(), QNdefRecord::Empty); record.setTypeNameFormat(QNdefRecord::NfcRtd); QCOMPARE(record.typeNameFormat(), QNdefRecord::NfcRtd); record.setTypeNameFormat(QNdefRecord::Mime); QCOMPARE(record.typeNameFormat(), QNdefRecord::Mime); record.setTypeNameFormat(QNdefRecord::Uri); QCOMPARE(record.typeNameFormat(), QNdefRecord::Uri); record.setTypeNameFormat(QNdefRecord::ExternalRtd); QCOMPARE(record.typeNameFormat(), QNdefRecord::ExternalRtd); record.setTypeNameFormat(QNdefRecord::Unknown); QCOMPARE(record.typeNameFormat(), QNdefRecord::Unknown); record.setTypeNameFormat(QNdefRecord::TypeNameFormat(6)); QCOMPARE(record.typeNameFormat(), QNdefRecord::Unknown); record.setTypeNameFormat(QNdefRecord::TypeNameFormat(7)); QCOMPARE(record.typeNameFormat(), QNdefRecord::Unknown); } // test type { QNdefRecord record; record.setType("test type"); QCOMPARE(record.type(), QByteArray("test type")); } // test id { QNdefRecord record; record.setId("test id"); QCOMPARE(record.id(), QByteArray("test id")); } // test payload { QNdefRecord record; record.setPayload("test payload"); QVERIFY(!record.isEmpty()); QVERIFY(!record.payload().isEmpty()); QCOMPARE(record.payload(), QByteArray("test payload")); } // test copy { QNdefRecord record; record.setTypeNameFormat(QNdefRecord::ExternalRtd); record.setType("qt.nokia.com:test-rtd"); record.setId("test id"); record.setPayload("test payload"); QNdefRecord ccopy(record); QCOMPARE(record.typeNameFormat(), ccopy.typeNameFormat()); QCOMPARE(record.type(), ccopy.type()); QCOMPARE(record.id(), ccopy.id()); QCOMPARE(record.payload(), ccopy.payload()); QVERIFY(record == ccopy); QVERIFY(!(record != ccopy)); QNdefRecord acopy; acopy = record; QCOMPARE(record.typeNameFormat(), acopy.typeNameFormat()); QCOMPARE(record.type(), acopy.type()); QCOMPARE(record.id(), acopy.id()); QCOMPARE(record.payload(), acopy.payload()); QVERIFY(record == acopy); QVERIFY(!(record != acopy)); QVERIFY(record != QNdefRecord()); } // test comparison { QNdefRecord record; record.setTypeNameFormat(QNdefRecord::ExternalRtd); record.setType("qt.nokia.com:test-rtd"); record.setId("test id"); record.setPayload("test payload"); QNdefRecord other; other.setTypeNameFormat(QNdefRecord::ExternalRtd); other.setType("qt.nokia.com:test-other-rtd"); other.setId("test other id"); other.setPayload("test other payload"); QVERIFY(record != other); } }