blob: d971caf4d104bda9babc1bcba0ee3eea03c0971f [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 <QString>
#include <qbluetoothhostinfo.h>
QT_USE_NAMESPACE
class tst_QBluetoothHostInfo : public QObject
{
Q_OBJECT
public:
tst_QBluetoothHostInfo();
~tst_QBluetoothHostInfo();
private slots:
void tst_address_data();
void tst_address();
void tst_name_data();
void tst_name();
void tst_construction_data();
void tst_construction();
void tst_copy();
void tst_compare_data();
void tst_compare();
};
tst_QBluetoothHostInfo::tst_QBluetoothHostInfo()
{
}
tst_QBluetoothHostInfo::~tst_QBluetoothHostInfo()
{
}
void tst_QBluetoothHostInfo::tst_address()
{
QFETCH(QString, addressString);
QBluetoothAddress address(addressString);
QVERIFY(!address.isNull());
QCOMPARE(address.toString(), addressString);
QBluetoothHostInfo info;
QBluetoothAddress result = info.address();
QVERIFY(result.isNull());
info.setAddress(address);
QCOMPARE(info.address().toString(), addressString);
}
void tst_QBluetoothHostInfo::tst_address_data()
{
QTest::addColumn<QString>("addressString");
QTest::newRow("11:22:33:44:55:66") << QString("11:22:33:44:55:66");
QTest::newRow("AA:BB:CC:DD:EE:FF") << QString("AA:BB:CC:DD:EE:FF");
QTest::newRow("aa:bb:cc:dd:ee:ff") << QString("AA:BB:CC:DD:EE:FF");
QTest::newRow("FF:FF:FF:FF:FF:FF") << QString("FF:FF:FF:FF:FF:FF");
}
void tst_QBluetoothHostInfo::tst_name()
{
QFETCH(QString, name);
QBluetoothHostInfo info;
QString result = info.name();
QVERIFY(result.isNull());
QVERIFY(result.isEmpty());
info.setName(name);
QCOMPARE(info.name(), name);
}
void tst_QBluetoothHostInfo::tst_name_data()
{
QTest::addColumn<QString>("name");
QTest::newRow("empty/default name") << QString();
QTest::newRow("empty name") << QString("");
QTest::newRow("ABCD") << QString("ABCD");
QTest::newRow("Very long name") << QString("ThisIsAVeryLongNameString-abcdefghijklmnopqrstuvwxyz");
QTest::newRow("special chars") << QString("gh\nfg i-+.,/;");
}
void tst_QBluetoothHostInfo::tst_construction_data()
{
QTest::addColumn<QString>("btAddress");
QTest::addColumn<QString>("name");
QTest::addColumn<bool>("validBtAddress");
QTest::newRow("11:22:33:44:55:66") << QString("11:22:33:44:55:66") << QString() << true;
QTest::newRow("AA:BB:CC:DD:EE:FF") << QString("AA:BB:CC:DD:EE:FF") << QString("") << true;
QTest::newRow("aa:bb:cc:dd:ee:ff") << QString("AA:BB:CC:DD:EE:FF") << QString("foobar") << true;
QTest::newRow("FF:FF:FF:FF:FF:FF") << QString("FF:FF:FF:FF:FF:FF") << QString("WeUseAlongStringAsName_FFFFFFFFFFFFFFFFFFFF") << true;
QTest::newRow("00:00:00:00:00:00") << QString("00:00:00:00:00:00") << QString("foobar2") << false;
}
void tst_QBluetoothHostInfo::tst_construction()
{
QFETCH(QString, btAddress);
QFETCH(QString, name);
QFETCH(bool, validBtAddress);
QBluetoothAddress empty;
QVERIFY(empty.isNull());
QBluetoothHostInfo setter;
QBluetoothAddress addr(btAddress);
setter.setName(name);
setter.setAddress(addr);
QCOMPARE(setter.name(), name);
QCOMPARE(setter.address().toString(), btAddress);
QCOMPARE(setter.address().isNull(), !validBtAddress);
setter.setAddress(empty);
QCOMPARE(setter.name(), name);
QCOMPARE(setter.address().toString(), QString("00:00:00:00:00:00"));
QCOMPARE(setter.address().isNull(), true);
setter.setName(QString());
QCOMPARE(setter.name(), QString());
QCOMPARE(setter.address().toString(), QString("00:00:00:00:00:00"));
QCOMPARE(setter.address().isNull(), true);
setter.setAddress(addr);
QCOMPARE(setter.name(), QString());
QCOMPARE(setter.address().toString(), btAddress);
QCOMPARE(setter.address().isNull(), !validBtAddress);
}
void tst_QBluetoothHostInfo::tst_copy()
{
QBluetoothHostInfo original;
original.setAddress(QBluetoothAddress("11:22:33:44:55:66"));
original.setName(QStringLiteral("FunkyName"));
QBluetoothHostInfo assignConstructor(original);
QCOMPARE(assignConstructor.name(), original.name());
QCOMPARE(assignConstructor.address(), original.address());
QBluetoothHostInfo assignOperator;
assignOperator = original;
QCOMPARE(assignOperator.name(), original.name());
QCOMPARE(assignOperator.address(), original.address());
}
void tst_QBluetoothHostInfo::tst_compare_data()
{
QTest::addColumn<QString>("btAddress1");
QTest::addColumn<QString>("name1");
QTest::addColumn<QString>("btAddress2");
QTest::addColumn<QString>("name2");
QTest::addColumn<bool>("sameHostInfo");
QTest::newRow("11:22:33:44:55:66 - same") << QString("11:22:33:44:55:66") << QString("same")
<< QString("11:22:33:44:55:66") << QString("same")
<< true;
QTest::newRow("11:22:33:44:55:66 - address") << QString("11:22:33:44:55:66") << QString("same")
<< QString("11:22:33:44:55:77") << QString("same")
<< false;
QTest::newRow("11:22:33:44:55:66 - name") << QString("11:22:33:44:55:66") << QString("same")
<< QString("11:22:33:44:55:66") << QString("different")
<< false;
QTest::newRow("11:22:33:44:55:66 - name/address") << QString("11:22:33:44:55:66") << QString("same")
<< QString("11:22:33:44:55:77") << QString("different")
<< false;
QTest::newRow("empty") << QString() << QString() << QString() << QString() << true;
QTest::newRow("empty left") << QString() << QString()
<< QString("11:22:33:44:55:66") << QString("same") << false;
QTest::newRow("empty right") << QString("11:22:33:44:55:66") << QString("same")
<< QString() << QString() << false;
QTest::newRow("00:00:00:00:00:00") << QString("00:00:00:00:00:00") << QString("foobar1")
<< QString("") << QString("foobar1") << true;
QTest::newRow("00:00:00:00:00:00") << QString("00:00:00:00:00:00") << QString("foobar1")
<< QString("") << QString("foobar2") << false;
QTest::newRow("00:00:00:00:00:00") << QString("00:00:00:00:00:00") << QString("")
<< QString("") << QString("") << true;
}
void tst_QBluetoothHostInfo::tst_compare()
{
QFETCH(QString, btAddress1);
QFETCH(QString, name1);
QFETCH(QString, btAddress2);
QFETCH(QString, name2);
QFETCH(bool, sameHostInfo);
QVERIFY(QBluetoothHostInfo() == QBluetoothHostInfo());
QBluetoothHostInfo info1;
info1.setAddress(QBluetoothAddress(btAddress1));
info1.setName(name1);
QBluetoothHostInfo info2;
info2.setAddress(QBluetoothAddress(btAddress2));
info2.setName(name2);
QCOMPARE(info1 == info2, sameHostInfo);
QCOMPARE(info1 != info2, !sameHostInfo);
}
QTEST_MAIN(tst_QBluetoothHostInfo)
#include "tst_qbluetoothhostinfo.moc"