/**************************************************************************** ** ** 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: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$ ** ****************************************************************************/ #include #include #include QT_USE_NAMESPACE class tst_QBluetoothAddress : public QObject { Q_OBJECT public: tst_QBluetoothAddress(); ~tst_QBluetoothAddress(); private slots: void tst_construction_data(); void tst_construction(); void tst_assignment(); void tst_comparison_data(); void tst_comparison(); void tst_lessThan_data(); void tst_lessThan(); void tst_clear_data(); void tst_clear(); }; tst_QBluetoothAddress::tst_QBluetoothAddress() { } tst_QBluetoothAddress::~tst_QBluetoothAddress() { } void tst_QBluetoothAddress::tst_construction_data() { QTest::addColumn("addressUInt"); QTest::addColumn("addressS12"); QTest::addColumn("addressS17"); QTest::newRow("11:22:33:44:55:66") << Q_UINT64_C(0x112233445566) << QString("112233445566") << QString("11:22:33:44:55:66"); QTest::newRow("AA:BB:CC:DD:EE:FF") << Q_UINT64_C(0xAABBCCDDEEFF) << QString("AABBCCDDEEFF") << QString("AA:BB:CC:DD:EE:FF"); QTest::newRow("aa:bb:cc:dd:ee:ff") << Q_UINT64_C(0xAABBCCDDEEFF) << QString("aabbccddeeff") << QString("AA:BB:CC:DD:EE:FF"); QTest::newRow("FF:FF:FF:FF:FF:FF") << Q_UINT64_C(0xFFFFFFFFFFFF) << QString("FFFFFFFFFFFF") << QString("FF:FF:FF:FF:FF:FF"); } void tst_QBluetoothAddress::tst_construction() { QFETCH(quint64, addressUInt); QFETCH(QString, addressS12); QFETCH(QString, addressS17); { QBluetoothAddress address; QVERIFY(address.isNull()); } { /* construct from quint64 */ QBluetoothAddress address(addressUInt); QVERIFY(!address.isNull()); QVERIFY(address.toUInt64() == addressUInt); QCOMPARE(address.toString(), addressS17); } { /* construct from string without colons */ QBluetoothAddress address(addressS12); QVERIFY(!address.isNull()); QVERIFY(address.toUInt64() == addressUInt); QCOMPARE(address.toString(), addressS17); } { /* construct from string with colons */ QBluetoothAddress address(addressS17); QVERIFY(!address.isNull()); QVERIFY(address.toUInt64() == addressUInt); QCOMPARE(address.toString(), addressS17); } { QString empty; QBluetoothAddress address(empty); QVERIFY(address.isNull()); } { QBluetoothAddress address(addressUInt); QBluetoothAddress copy(address); QVERIFY(address.toUInt64() == copy.toUInt64()); } } void tst_QBluetoothAddress::tst_assignment() { QBluetoothAddress address(Q_UINT64_C(0x112233445566)); { QBluetoothAddress copy = address; QCOMPARE(address.toUInt64(), copy.toUInt64()); } { QBluetoothAddress copy1; QBluetoothAddress copy2; QVERIFY(copy1.isNull()); QVERIFY(copy2.isNull()); copy1 = copy2 = address; QVERIFY(!copy1.isNull()); QVERIFY(!copy2.isNull()); QVERIFY(address.toUInt64() == copy1.toUInt64()); QVERIFY(address.toUInt64() == copy2.toUInt64()); copy1.clear(); QVERIFY(copy1.isNull()); QVERIFY2(copy1 != address, "Verify that copy1 is a copy of address, the d_ptr are being copied"); } } void tst_QBluetoothAddress::tst_comparison_data() { QTest::addColumn("address1"); QTest::addColumn("address2"); QTest::addColumn("result"); QTest::newRow("invalid == invalid") << QBluetoothAddress() << QBluetoothAddress() << true; QTest::newRow("valid != invalid") << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << QBluetoothAddress() << false; QTest::newRow("valid == valid") << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << true; } void tst_QBluetoothAddress::tst_comparison() { QFETCH(QBluetoothAddress, address1); QFETCH(QBluetoothAddress, address2); QFETCH(bool, result); QCOMPARE(address1 == address2, result); QCOMPARE(address2 == address1, result); QCOMPARE(address1 != address2, !result); QCOMPARE(address2 != address1, !result); } void tst_QBluetoothAddress::tst_lessThan_data() { QTest::addColumn("address1"); QTest::addColumn("address2"); QTest::addColumn("result"); QTest::newRow("invalid < invalid") << QBluetoothAddress() << QBluetoothAddress() << false; QTest::newRow("invalid < valid") << QBluetoothAddress() << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << true; QTest::newRow("valid < invalid") << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << QBluetoothAddress() << false; QTest::newRow("valid < valid") << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << QBluetoothAddress(Q_UINT64_C(0xAABBCCDDEEFF)) << true; QTest::newRow("valid < valid") << QBluetoothAddress(Q_UINT64_C(0xAABBCCDDEEFF)) << QBluetoothAddress(Q_UINT64_C(0x112233445566)) << false; } void tst_QBluetoothAddress::tst_lessThan() { QFETCH(QBluetoothAddress, address1); QFETCH(QBluetoothAddress, address2); QFETCH(bool, result); QCOMPARE(address1 < address2, result); } void tst_QBluetoothAddress::tst_clear_data() { QTest::addColumn("addressS17"); QTest::newRow("FF:00:F3:25:00:00") << QString("FF:00:F3:25:00:00"); } void tst_QBluetoothAddress::tst_clear() { QFETCH(QString, addressS17); QBluetoothAddress address(addressS17); QVERIFY(!address.isNull()); address.clear(); QVERIFY(address.toString() == QString("00:00:00:00:00:00")); } QTEST_MAIN(tst_QBluetoothAddress) #include "tst_qbluetoothaddress.moc"