From f6b6fb24f642fe7900405861303fb14458514f03 Mon Sep 17 00:00:00 2001 From: Alex Blasche Date: Thu, 27 Jun 2013 21:24:53 +0200 Subject: QBluetoothServiceDiscovery auto test fix Change-Id: I4e20a50549f69367652bd6881a3c541aa283c128 Reviewed-by: Aaron McCarthy --- tests/auto/auto.pro | 2 - .../qbluetoothservicediscoveryagent.pro | 1 - .../tst_qbluetoothservicediscoveryagent.cpp | 67 ++++++++++++---------- 3 files changed, 37 insertions(+), 33 deletions(-) diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 06e92bd8..10798a1b 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -29,5 +29,3 @@ qtHaveModule(nfc) { qnearfieldtagtype2 \ qndefnfcsmartposterrecord } - -qbluetoothservicediscoveryagent.CONFIG += no_check_target # QTBUG-22017 diff --git a/tests/auto/qbluetoothservicediscoveryagent/qbluetoothservicediscoveryagent.pro b/tests/auto/qbluetoothservicediscoveryagent/qbluetoothservicediscoveryagent.pro index 88ba38ec..7b8ee74a 100644 --- a/tests/auto/qbluetoothservicediscoveryagent/qbluetoothservicediscoveryagent.pro +++ b/tests/auto/qbluetoothservicediscoveryagent/qbluetoothservicediscoveryagent.pro @@ -4,5 +4,4 @@ CONFIG += testcase QT = core concurrent bluetooth testlib -CONFIG += insignificant_test # QTBUG-22017 DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0 diff --git a/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp b/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp index 4970cbde..2ab0326c 100644 --- a/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp +++ b/tests/auto/qbluetoothservicediscoveryagent/tst_qbluetoothservicediscoveryagent.cpp @@ -79,16 +79,21 @@ private slots: private: QList devices; + bool localDeviceAvailable; }; tst_QBluetoothServiceDiscoveryAgent::tst_QBluetoothServiceDiscoveryAgent() { // start Bluetooth if not started QBluetoothLocalDevice *device = new QBluetoothLocalDevice(); - device->powerOn(); + localDeviceAvailable = device->isValid(); + if (localDeviceAvailable) { + device->powerOn(); + // wait for the device to switch bluetooth mode. + QTest::qWait(1000); + } delete device; - // wait for the device to switch bluetooth mode. - QTest::qWait(1000); + qRegisterMetaType("QBluetoothDeviceInfo"); qRegisterMetaType("QBluetoothServiceInfo"); qRegisterMetaType >("QList"); @@ -114,33 +119,31 @@ void tst_QBluetoothServiceDiscoveryAgent::serviceError(const QBluetoothServiceDi void tst_QBluetoothServiceDiscoveryAgent::initTestCase() { -#if 1 - QBluetoothDeviceDiscoveryAgent discoveryAgent; - - QSignalSpy finishedSpy(&discoveryAgent, SIGNAL(finished())); - QSignalSpy errorSpy(&discoveryAgent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error))); - QSignalSpy discoveredSpy(&discoveryAgent, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&))); -// connect(&discoveryAgent, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&)), -// this, SLOT(deviceDiscoveryDebug(const QBluetoothDeviceInfo&))); + if (localDeviceAvailable) { + QBluetoothDeviceDiscoveryAgent discoveryAgent; + + QSignalSpy finishedSpy(&discoveryAgent, SIGNAL(finished())); + QSignalSpy errorSpy(&discoveryAgent, SIGNAL(error(QBluetoothDeviceDiscoveryAgent::Error))); + QSignalSpy discoveredSpy(&discoveryAgent, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&))); + // connect(&discoveryAgent, SIGNAL(deviceDiscovered(const QBluetoothDeviceInfo&)), + // this, SLOT(deviceDiscoveryDebug(const QBluetoothDeviceInfo&))); + + discoveryAgent.start(); + + // Wait for up to MaxScanTime for the scan to finish + int scanTime = MaxScanTime; + while (finishedSpy.count() == 0 && scanTime > 0) { + QTest::qWait(1000); + scanTime -= 1000; + } + // qDebug() << "Scan time left:" << scanTime; - discoveryAgent.start(); + // Expect finished signal with no error + QVERIFY(finishedSpy.count() == 1); + QVERIFY(errorSpy.isEmpty()); - // Wait for up to MaxScanTime for the scan to finish - int scanTime = MaxScanTime; - while (finishedSpy.count() == 0 && scanTime > 0) { - QTest::qWait(1000); - scanTime -= 1000; + devices = discoveryAgent.discoveredDevices(); } -// qDebug() << "Scan time left:" << scanTime; - - // Expect finished signal with no error - QVERIFY(finishedSpy.count() == 1); - QVERIFY(errorSpy.isEmpty()); - - devices = discoveryAgent.discoveredDevices(); -#else - devices.append(QBluetoothDeviceInfo(QBluetoothAddress(Q_UINT64_C(0x001e3a81ba69)), "Yuna", 0)); -#endif } void tst_QBluetoothServiceDiscoveryAgent::serviceDiscoveryDebug(const QBluetoothServiceInfo &info) @@ -260,7 +263,7 @@ void tst_QBluetoothServiceDiscoveryAgent::tst_serviceDiscovery() QFETCH(QList, uuidFilter); QFETCH(QBluetoothServiceDiscoveryAgent::Error, serviceDiscoveryError); - qDebug() << "Doing address" << deviceInfo.address().toString(); + qDebug() << "Scanning address" << deviceInfo.address().toString(); QBluetoothServiceDiscoveryAgent discoveryAgent(deviceInfo.address()); QVERIFY(!discoveryAgent.isActive()); @@ -313,15 +316,16 @@ void tst_QBluetoothServiceDiscoveryAgent::tst_serviceDiscovery() // All returned QBluetoothServiceInfo should be valid. while (!discoveredSpy.isEmpty()) { const QVariant v = discoveredSpy.takeFirst().at(0); - // Work around limitation in QMetaType and moc. // QBluetoothServiceInfo is registered with metatype as QBluetoothServiceInfo // moc sees it as the unqualified QBluetoothServiceInfo. - if (qstrcmp(v.typeName(), "QBluetoothServiceInfo") == 0) { + if (v.userType() == qMetaTypeId()) + { const QBluetoothServiceInfo info = *reinterpret_cast(v.constData()); QVERIFY(info.isValid()); + QVERIFY(!info.isRegistered()); #if 0 qDebug() << info.device().name() << info.device().address().toString(); @@ -332,7 +336,10 @@ void tst_QBluetoothServiceDiscoveryAgent::tst_serviceDiscovery() qDebug() << "\tRFCOMM server channel:" << info.serverChannel(); //dumpServiceInfoAttributes(info); #endif + } else { + QFAIL("Unknown type returned by service discovery"); } + } QVERIFY(discoveryAgent.discoveredServices().count() != 0); -- cgit v1.2.3