summaryrefslogtreecommitdiffstats
path: root/tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp')
-rw-r--r--tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp268
1 files changed, 72 insertions, 196 deletions
diff --git a/tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp b/tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp
index c3c457e9..a902ac5d 100644
--- a/tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp
+++ b/tests/auto/qnearfieldmanager/tst_qnearfieldmanager.cpp
@@ -1,39 +1,14 @@
-/****************************************************************************
-**
-** Copyright (C) 2016 The Qt Company Ltd.
-** Contact: https://www.qt.io/licensing/
-**
-** This file is part of the QtNfc module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see https://www.qt.io/terms-conditions. For further
-** information use the contact form at https://www.qt.io/contact-us.
-**
-** GNU General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU
-** General Public License version 3 as published by the Free Software
-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
-** included in the packaging of this file. Please review the following
-** information to ensure the GNU General Public License requirements will
-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
-#include <private/qnearfieldmanager_emulator_p.h>
-#include <qnearfieldmanager.h>
-#include <qndefnfctextrecord.h>
-#include <qndefnfcurirecord.h>
-#include <qndefmessage.h>
-#include <qndefrecord.h>
+#include <qnearfieldmanager_emulator_p.h>
+#include <QtNfc/qnearfieldmanager.h>
+#include <QtNfc/qndefnfctextrecord.h>
+#include <QtNfc/qndefnfcurirecord.h>
+#include <QtNfc/qndefmessage.h>
+#include <QtNfc/qndefrecord.h>
QT_USE_NAMESPACE
@@ -52,18 +27,13 @@ public:
private slots:
void initTestCase();
- void targetDetected_data();
- void targetDetected();
-
- void unregisterNdefMessageHandler();
-
- void registerNdefMessageHandler();
+ void isSupported();
+ void isSupported_data();
- void registerNdefMessageHandler_type_data();
- void registerNdefMessageHandler_type();
+ void userInformation();
- void registerNdefMessageHandler_filter_data();
- void registerNdefMessageHandler_filter();
+ void targetDetected_data();
+ void targetDetected();
};
tst_QNearFieldManager::tst_QNearFieldManager()
@@ -79,202 +49,108 @@ void tst_QNearFieldManager::initTestCase()
QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
QNearFieldManager manager(emulatorBackend, 0);
- QVERIFY(manager.isAvailable());
+ QVERIFY(manager.isEnabled());
}
-void tst_QNearFieldManager::targetDetected_data()
+void tst_QNearFieldManager::isSupported()
{
- QTest::addColumn<bool>("deleteTarget");
-
- QTest::newRow("AnyTarget") << false;
- QTest::newRow("NfcTagType1") << false;
- QTest::newRow("Delete Target") << true;
-}
-
-void tst_QNearFieldManager::targetDetected()
-{
- QFETCH(bool, deleteTarget);
+ QFETCH(QNearFieldTarget::AccessMethod, accessMethod);
+ QFETCH(bool, supported);
QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
- QNearFieldManager manager(emulatorBackend, 0);
+ QNearFieldManager manager(emulatorBackend, nullptr);
- QSignalSpy targetDetectedSpy(&manager, SIGNAL(targetDetected(QNearFieldTarget*)));
- QSignalSpy targetLostSpy(&manager, SIGNAL(targetLost(QNearFieldTarget*)));
-
- manager.startTargetDetection();
-
- QTRY_VERIFY(!targetDetectedSpy.isEmpty());
-
- QNearFieldTarget *target = targetDetectedSpy.first().at(0).value<QNearFieldTarget *>();
-
- QSignalSpy disconnectedSpy(target, SIGNAL(disconnected()));
-
- QVERIFY(target);
-
- QVERIFY(!target->uid().isEmpty());
-
- if (!deleteTarget) {
- QTRY_VERIFY(!targetLostSpy.isEmpty());
-
- QNearFieldTarget *lostTarget = targetLostSpy.first().at(0).value<QNearFieldTarget *>();
-
- QCOMPARE(target, lostTarget);
-
- QVERIFY(!disconnectedSpy.isEmpty());
- } else {
- delete target;
-
- // wait for another targetDetected() without a targetLost() signal in between.
- targetDetectedSpy.clear();
- targetLostSpy.clear();
-
- QTRY_VERIFY(targetLostSpy.isEmpty() && !targetDetectedSpy.isEmpty());
- }
-
- manager.stopTargetDetection();
+ QCOMPARE(manager.isSupported(accessMethod), supported);
}
-void tst_QNearFieldManager::unregisterNdefMessageHandler()
+void tst_QNearFieldManager::isSupported_data()
{
- QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
- QNearFieldManager manager(emulatorBackend, 0);
+ QTest::addColumn<QNearFieldTarget::AccessMethod>("accessMethod");
+ QTest::addColumn<bool>("supported");
- QVERIFY(!manager.unregisterNdefMessageHandler(-1));
- QVERIFY(!manager.unregisterNdefMessageHandler(0));
+ QTest::newRow("UnknownAccess") << QNearFieldTarget::UnknownAccess << false;
+ QTest::newRow("NdefAccess") << QNearFieldTarget::NdefAccess << true;
+ QTest::newRow("TagTypeSpecificAccess") << QNearFieldTarget::TagTypeSpecificAccess << false;
+ QTest::newRow("AnyAccess") << QNearFieldTarget::AnyAccess << true;
}
-class MessageListener : public QObject
-{
- Q_OBJECT
-
-signals:
- void matchedNdefMessage(const QNdefMessage &message, QNearFieldTarget *target);
-};
-
-void tst_QNearFieldManager::registerNdefMessageHandler()
+void tst_QNearFieldManager::userInformation()
{
QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
- QNearFieldManager manager(emulatorBackend, 0);
+ QNearFieldManager manager(emulatorBackend, nullptr);
- MessageListener listener;
- QSignalSpy messageSpy(&listener, SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
+ QSignalSpy spy(emulatorBackend, &QNearFieldManagerPrivateImpl::userInformationChanged);
- int id = manager.registerNdefMessageHandler(&listener,
- SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
+ manager.startTargetDetection(QNearFieldTarget::AnyAccess);
- QVERIFY(id != -1);
+ const QString progressString("NFC target detection in progress");
+ manager.setUserInformation(progressString);
- QTRY_VERIFY(!messageSpy.isEmpty());
+ const QString errorString("Failed to detect NFC targets");
+ manager.stopTargetDetection(errorString);
- const QNdefMessage message = messageSpy.first().at(0).value<QNdefMessage>();
- QNearFieldTarget *target = messageSpy.first().at(1).value<QNearFieldTarget *>();
-
- QVERIFY(target);
-
- QVERIFY(manager.unregisterNdefMessageHandler(id));
+ QCOMPARE(spy.size(), 2);
+ QCOMPARE(spy.at(0).at(0).toString(), progressString);
+ QCOMPARE(spy.at(1).at(0).toString(), errorString);
}
-void tst_QNearFieldManager::registerNdefMessageHandler_type_data()
+void tst_QNearFieldManager::targetDetected_data()
{
- QTest::addColumn<QNdefRecord::TypeNameFormat>("typeNameFormat");
- QTest::addColumn<QByteArray>("type");
+ QTest::addColumn<QNearFieldTarget::AccessMethod>("accessMethod");
+ QTest::addColumn<bool>("deleteTarget");
- QTest::newRow("Image") << QNdefRecord::Mime << QByteArray("image/png");
- QTest::newRow("URI") << QNdefRecord::NfcRtd << QByteArray("U");
- QTest::newRow("Text") << QNdefRecord::NfcRtd << QByteArray("T");
+ QTest::newRow("UnknownAccess") << QNearFieldTarget::UnknownAccess << false;
+ QTest::newRow("NdefAccess, no delete") << QNearFieldTarget::NdefAccess << false;
+ QTest::newRow("AnyAccess, delete") << QNearFieldTarget::AnyAccess << true;
}
-void tst_QNearFieldManager::registerNdefMessageHandler_type()
+void tst_QNearFieldManager::targetDetected()
{
- QFETCH(QNdefRecord::TypeNameFormat, typeNameFormat);
- QFETCH(QByteArray, type);
+ QFETCH(QNearFieldTarget::AccessMethod, accessMethod);
+ QFETCH(bool, deleteTarget);
QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
- QNearFieldManager manager(emulatorBackend, 0);
+ QNearFieldManager manager(emulatorBackend, nullptr);
- MessageListener listener;
- QSignalSpy messageSpy(&listener, SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
+ QSignalSpy targetDetectedSpy(&manager, &QNearFieldManager::targetDetected);
+ QSignalSpy targetLostSpy(&manager, &QNearFieldManager::targetLost);
+ QSignalSpy detectionStoppedSpy(&manager, &QNearFieldManager::targetDetectionStopped);
- int id = manager.registerNdefMessageHandler(typeNameFormat, type, &listener,
- SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
+ const bool started = manager.startTargetDetection(accessMethod);
- QVERIFY(id != -1);
+ if (started) {
+ QTRY_VERIFY(!targetDetectedSpy.isEmpty());
- QTRY_VERIFY(!messageSpy.isEmpty());
+ QNearFieldTarget *target = targetDetectedSpy.first().at(0).value<QNearFieldTarget *>();
- const QNdefMessage message = messageSpy.first().at(0).value<QNdefMessage>();
+ QSignalSpy disconnectedSpy(target, SIGNAL(disconnected()));
- bool hasRecord = false;
- for (const QNdefRecord &record : message) {
- if (record.typeNameFormat() == typeNameFormat && record.type() == type) {
- hasRecord = true;
- break;
- }
- }
+ QVERIFY(target);
- QVERIFY(hasRecord);
+ QVERIFY(!target->uid().isEmpty());
- QNearFieldTarget *target = messageSpy.first().at(1).value<QNearFieldTarget *>();
+ if (!deleteTarget) {
+ QTRY_VERIFY(!targetLostSpy.isEmpty());
- QVERIFY(target);
-}
+ QNearFieldTarget *lostTarget = targetLostSpy.first().at(0).value<QNearFieldTarget *>();
-void tst_QNearFieldManager::registerNdefMessageHandler_filter_data()
-{
- QTest::addColumn<QNdefFilter>("filter");
-
- QNdefFilter filter;
-
- QTest::newRow("Empty") << filter;
-
- filter.clear();
- filter.setOrderMatch(true);
- filter.appendRecord(QNdefRecord::Mime, "image/png");
- filter.appendRecord<QNdefNfcTextRecord>(2, 10);
- filter.appendRecord<QNdefNfcUriRecord>(1, 1);
- QTest::newRow("Image + Multiple Text + URI") << filter;
-
- filter.clear();
- filter.setOrderMatch(true);
- filter.appendRecord<QNdefNfcTextRecord>(1, 1);
- filter.appendRecord<QNdefNfcUriRecord>(1, 1);
- QTest::newRow("Text + URI") << filter;
-
- QNdefFilter::Record record;
-
- filter.clear();
- filter.setOrderMatch(false);
- filter.appendRecord<QNdefNfcUriRecord>(1, 1);
- record.typeNameFormat = QNdefRecord::NfcRtd;
- record.type = "T";
- record.minimum = 1;
- record.maximum = 1;
- filter.appendRecord(record);
- QTest::newRow("Unordered Text + URI") << filter;
-}
+ QCOMPARE(target, lostTarget);
-void tst_QNearFieldManager::registerNdefMessageHandler_filter()
-{
- QFETCH(QNdefFilter, filter);
+ QVERIFY(!disconnectedSpy.isEmpty());
+ } else {
+ delete target;
- QNearFieldManagerPrivateImpl *emulatorBackend = new QNearFieldManagerPrivateImpl;
- QNearFieldManager manager(emulatorBackend, 0);
+ // wait for another targetDetected() without a targetLost() signal in between.
+ targetDetectedSpy.clear();
+ targetLostSpy.clear();
- MessageListener listener;
- QSignalSpy messageSpy(&listener, SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
-
- int id = manager.registerNdefMessageHandler(filter, &listener,
- SIGNAL(matchedNdefMessage(QNdefMessage,QNearFieldTarget*)));
-
- QVERIFY(id != -1);
-
- QTRY_VERIFY(!messageSpy.isEmpty());
-
- const QNdefMessage message = messageSpy.first().at(0).value<QNdefMessage>();
+ QTRY_VERIFY(targetLostSpy.isEmpty() && !targetDetectedSpy.isEmpty());
+ }
+ }
- QNearFieldTarget *target = messageSpy.first().at(1).value<QNearFieldTarget *>();
+ manager.stopTargetDetection();
- QVERIFY(target);
+ QCOMPARE(detectionStoppedSpy.size(), 1);
}
QTEST_MAIN(tst_QNearFieldManager)