/*! Description: Unit test for NFC registerNdefMessageHandler with a NDef filter TestScenario: 1. Touch a tag with random NDef message/with 'Image + Multiple Text + URI' NDef message/with 'Text + URI' NDef message TestExpectedResults: 1. matchedNdefMessage signal will be emitted */ void tst_QNearFieldManager::registerNdefMessageHandler_filter() { QFETCH(QNdefFilter, filter); QFETCH(QString, hint); QNearFieldManager manager; MessageListener listener; QSignalSpy messageSpy(&listener, SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*))); int id = manager.registerNdefMessageHandler(filter, &listener, SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*))); QVERIFY(id != -1); QNfcTestUtil::ShowAutoMsg(hint, &messageSpy, 1); QTRY_VERIFY(!messageSpy.isEmpty()); const QNdefMessage message = messageSpy.first().at(0).value<QNdefMessage>(); QNearFieldTarget *target = messageSpy.first().at(1).value<QNearFieldTarget *>(); QVERIFY(target == NULL);//symbain backend always return NULL target QCOMPARE(filter.recordCount(), message.count()); qDebug()<<"message.count()="<<message.count(); for (int i = 0; i < filter.recordCount(); ++i) { if (filter.orderMatch()) { QCOMPARE(filter.recordAt(i).typeNameFormat, message.at(i).typeNameFormat()); QCOMPARE(filter.recordAt(i).type, message.at(i).type()); } else { bool matched = false; for (int j = 0; j < filter.recordCount(); ++j) { if (message.at(i).typeNameFormat() == filter.recordAt(i).typeNameFormat && message.at(i).type() == filter.recordAt(i).type) { matched = true; break; } } QVERIFY(matched); } } QVERIFY(manager.unregisterNdefMessageHandler(id)); }