diff options
Diffstat (limited to 'tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp')
-rw-r--r-- | tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp | 78 |
1 files changed, 60 insertions, 18 deletions
diff --git a/tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp b/tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp index 7af7cf5e..fa4629ac 100644 --- a/tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp +++ b/tests/auto/qbluetoothsocket/tst_qbluetoothsocket.cpp @@ -1,31 +1,26 @@ /**************************************************************************** ** -** Copyright (C) 2015 The Qt Company Ltd. -** Contact: http://www.qt.io/licensing/ +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ ** ** This file is part of the QtBluetooth module of the Qt Toolkit. ** -** $QT_BEGIN_LICENSE:LGPL21$ +** $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 http://www.qt.io/terms-conditions. For further -** information use the contact form at http://www.qt.io/contact-us. +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. ** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 2.1 or version 3 as published by the Free -** Software Foundation and appearing in the file LICENSE.LGPLv21 and -** LICENSE.LGPLv3 included in the packaging of this file. Please review the -** following information to ensure the GNU Lesser General Public License -** requirements will be met: https://www.gnu.org/licenses/lgpl.html and -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** As a special exception, The Qt Company gives you certain additional -** rights. These rights are described in The Qt Company LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** 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$ ** @@ -83,6 +78,8 @@ private slots: void tst_preferredSecurityFlags(); + void tst_unsupportedProtocolError(); + public slots: void serviceDiscovered(const QBluetoothServiceInfo &info); void finished(); @@ -508,7 +505,7 @@ void tst_QBluetoothSocket::tst_preferredSecurityFlags() //test default values #if defined(QT_ANDROID_BLUETOOTH) | defined(QT_OSX_BLUETOOTH) QCOMPARE(socket.preferredSecurityFlags(), QBluetooth::Secure); -#elif defined(QT_BLUEZ_BLUETOOTH) +#elif QT_CONFIG(bluez) QCOMPARE(socket.preferredSecurityFlags(), QBluetooth::Authorization); #else QCOMPARE(socket.preferredSecurityFlags(), QBluetooth::NoSecurity); @@ -524,6 +521,51 @@ void tst_QBluetoothSocket::tst_preferredSecurityFlags() #endif } +void tst_QBluetoothSocket::tst_unsupportedProtocolError() +{ +#if defined(QT_ANDROID_BLUETOOTH) + QSKIP("Android platform (re)sets RFCOMM socket type, nothing to test"); +#endif + // This socket has 'UnknownProtocol' socketType. + // Any attempt to connectToService should end in + // UnsupportedProtocolError. + QBluetoothSocket socket; + QCOMPARE(socket.socketType(), QBluetoothServiceInfo::UnknownProtocol); + QVERIFY(socket.error() == QBluetoothSocket::NoSocketError); + QVERIFY(socket.errorString() == QString()); + + QSignalSpy errorSpy(&socket, SIGNAL(error(QBluetoothSocket::SocketError))); + + // 1. Stop early with 'UnsupportedProtocolError'. + QBluetoothServiceInfo dummyServiceInfo; + socket.connectToService(dummyServiceInfo, QIODevice::ReadWrite); + QTRY_COMPARE_WITH_TIMEOUT(errorSpy.size(), 1, 1000); + QCOMPARE(errorSpy.size(), 1); + QCOMPARE(errorSpy.takeFirst().at(0).toInt(), int(QBluetoothSocket::UnsupportedProtocolError)); + QVERIFY(socket.errorString().size() != 0); + QCOMPARE(socket.state(), QBluetoothSocket::UnconnectedState); + + errorSpy.clear(); + + // 2. Stop early with UnsupportedProtocolError (before testing an invalid address/port). + socket.connectToService(QBluetoothAddress(), 1, QIODevice::ReadWrite); + QTRY_COMPARE_WITH_TIMEOUT(errorSpy.size(), 1, 1000); + QCOMPARE(errorSpy.size(), 1); + QCOMPARE(errorSpy.takeFirst().at(0).toInt(), int(QBluetoothSocket::UnsupportedProtocolError)); + QVERIFY(socket.errorString().size() != 0); + QCOMPARE(socket.state(), QBluetoothSocket::UnconnectedState); + + errorSpy.clear(); + + // 3. Stop early (ignoring an invalid address/uuid). + socket.connectToService(QBluetoothAddress(), QBluetoothUuid(), QIODevice::ReadWrite); + QTRY_COMPARE_WITH_TIMEOUT(errorSpy.size(), 1, 1000); + QCOMPARE(errorSpy.size(), 1); + QCOMPARE(errorSpy.takeFirst().at(0).toInt(), int(QBluetoothSocket::UnsupportedProtocolError)); + QVERIFY(socket.errorString().size() != 0); + QCOMPARE(socket.state(), QBluetoothSocket::UnconnectedState); +} + QTEST_MAIN(tst_QBluetoothSocket) #include "tst_qbluetoothsocket.moc" |