blob: 7be97b363bf5052444ff547002988a8ad15d9d58 [file] [log] [blame]
/****************************************************************************
**
** 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 <QtTest/QtTest>
#include <QDebug>
#include <qbluetoothaddress.h>
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<quint64>("addressUInt");
QTest::addColumn<QString>("addressS12");
QTest::addColumn<QString>("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<QBluetoothAddress>("address1");
QTest::addColumn<QBluetoothAddress>("address2");
QTest::addColumn<bool>("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<QBluetoothAddress>("address1");
QTest::addColumn<QBluetoothAddress>("address2");
QTest::addColumn<bool>("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<QString>("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"