summaryrefslogtreecommitdiffstats
path: root/tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp')
-rw-r--r--tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp200
1 files changed, 101 insertions, 99 deletions
diff --git a/tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp b/tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp
index 2206826d..377f788a 100644
--- a/tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp
+++ b/tests/auto/qbluetoothuuid/tst_qbluetoothuuid.cpp
@@ -1,30 +1,5 @@
-/****************************************************************************
-**
-** 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$
-**
-****************************************************************************/
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
#include <QtTest/QtTest>
#include <QUuid>
@@ -33,6 +8,10 @@
#include <qbluetoothuuid.h>
+#if defined(Q_OS_DARWIN)
+#include <QtCore/private/qcore_mac_p.h>
+#endif
+
#if defined(Q_OS_UNIX)
# include <arpa/inet.h>
# include <netinet/in.h>
@@ -40,8 +19,6 @@
QT_USE_NAMESPACE
-Q_DECLARE_METATYPE(quint128)
-
class tst_QBluetoothUuid : public QObject
{
Q_OBJECT
@@ -59,12 +36,10 @@ private slots:
void tst_conversion();
void tst_comparison_data();
void tst_comparison();
- void tst_quint128ToUuid();
};
tst_QBluetoothUuid::tst_QBluetoothUuid()
{
- qRegisterMetaType<quint128>();
}
tst_QBluetoothUuid::~tst_QBluetoothUuid()
@@ -84,7 +59,7 @@ void tst_QBluetoothUuid::tst_construction()
}
{
- QBluetoothUuid uuid(QBluetoothUuid::PublicBrowseGroup);
+ QBluetoothUuid uuid(QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup);
QVERIFY(!uuid.isNull());
@@ -94,11 +69,11 @@ void tst_QBluetoothUuid::tst_construction()
uuid16 = uuid.toUInt16(&ok);
QVERIFY(ok);
- QCOMPARE(uuid16, static_cast<quint16>(QBluetoothUuid::PublicBrowseGroup));
+ QCOMPARE(uuid16, static_cast<quint16>(QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup));
}
{
- QBluetoothUuid uuid(QBluetoothUuid::PublicBrowseGroup);
+ QBluetoothUuid uuid(QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup);
QBluetoothUuid copy(uuid);
@@ -106,7 +81,7 @@ void tst_QBluetoothUuid::tst_construction()
}
{
- QBluetoothUuid uuid(QBluetoothUuid::L2cap);
+ QBluetoothUuid uuid(QBluetoothUuid::ProtocolUuid::L2cap);
QVERIFY(!uuid.isNull());
@@ -116,7 +91,7 @@ void tst_QBluetoothUuid::tst_construction()
uuid16 = uuid.toUInt16(&ok);
QVERIFY(ok);
- QCOMPARE(uuid16, static_cast<quint16>(QBluetoothUuid::L2cap));
+ QCOMPARE(uuid16, static_cast<quint16>(QBluetoothUuid::ProtocolUuid::L2cap));
}
{
@@ -146,7 +121,7 @@ void tst_QBluetoothUuid::tst_construction()
void tst_QBluetoothUuid::tst_assignment()
{
- QBluetoothUuid uuid(QBluetoothUuid::PublicBrowseGroup);
+ QBluetoothUuid uuid(QBluetoothUuid::ServiceClassUuid::PublicBrowseGroup);
{
QBluetoothUuid copy = uuid;
@@ -173,42 +148,6 @@ void tst_QBluetoothUuid::tst_assignment()
#define BASEUUID "-0000-1000-8000-00805F9B34FB"
-#define UUID128_32(x, a, b, c, d) \
- quint128 x = { \
- { \
- a, b, c, d, \
- 0x00, 0x00, \
- 0x10, 0x00, \
- 0x80, 0x00, \
- 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB \
- } \
- }
-
-#define UUID128_16(x, a, b) UUID128_32(x, 0, 0, a, b)
-
-#define NEWROW16(text, a, b, s) \
-do { \
- UUID128_16(uuid128, a, b); \
- quint32 uuid32 = a << 8 | b; \
- quint16 uuid16 = a << 8 | b; \
- QTest::newRow(text) << true << uuid16 << true << uuid32 << true << uuid128 \
- << (QLatin1Char('{') + QLatin1String(s) + QLatin1Char('}')); \
-} while (0)
-
-#define NEWROW32(text, a, b, c, d, s) \
-do { \
- UUID128_32(uuid128, a, b, c, d); \
- quint32 uuid32 = a << 24 | b << 16 | c << 8 | d; \
- quint16 uuid16; \
- bool constructUuid16 = (a == 0) && (b == 0); \
- if (constructUuid16) \
- uuid16 = c << 8 | d; \
- else \
- uuid16 = 0; \
- QTest::newRow(text) << constructUuid16 << uuid16 << true << uuid32 << true << uuid128 \
- << (QLatin1Char('{') + QLatin1String(s) + QLatin1Char('}')); \
-} while (0)
-
void tst_QBluetoothUuid::tst_conversion_data()
{
QTest::addColumn<bool>("constructUuid16");
@@ -216,19 +155,53 @@ void tst_QBluetoothUuid::tst_conversion_data()
QTest::addColumn<bool>("constructUuid32");
QTest::addColumn<quint32>("uuid32");
QTest::addColumn<bool>("constructUuid128");
- QTest::addColumn<quint128>("uuid128");
+ QTest::addColumn<QUuid::Id128Bytes>("uuid128");
QTest::addColumn<QString>("uuidS");
- NEWROW32("base uuid", 0x00, 0x00, 0x00, 0x00, "00000000" BASEUUID);
- NEWROW16("0x0001", 0x00, 0x01, "00000001" BASEUUID);
- NEWROW16("0xffff", 0xff, 0xff, "0000FFFF" BASEUUID);
- NEWROW32("0x00010000", 0x00, 0x01, 0x00, 0x00, "00010000" BASEUUID);
- NEWROW32("0x0001ffff", 0x00, 0x01, 0xff, 0xff, "0001FFFF" BASEUUID);
- NEWROW32("0xffff0000", 0xff, 0xff, 0x00, 0x00, "FFFF0000" BASEUUID);
- NEWROW32("0xffffffff", 0xff, 0xff, 0xff, 0xff, "FFFFFFFF" BASEUUID);
+ static const auto uuid128_32 = [](quint8 a, quint8 b, quint8 c, quint8 d) {
+ QUuid::Id128Bytes x = {
+ {
+ a, b, c, d,
+ 0x00, 0x00,
+ 0x10, 0x00,
+ 0x80, 0x00,
+ 0x00, 0x80, 0x5F, 0x9B, 0x34, 0xFB
+ }
+ };
+ return x;
+ };
+
+ auto newRow32 = [](const char *name, quint8 a, quint8 b, quint8 c, quint8 d, const char *s) {
+ auto uuid128 = uuid128_32(a, b, c, d);
+ quint32 uuid32 = a << 24 | b << 16 | c << 8 | d;
+ quint16 uuid16; \
+ bool constructUuid16 = (a == 0) && (b == 0);
+ if (constructUuid16)
+ uuid16 = c << 8 | d;
+ else
+ uuid16 = 0;
+ QTest::newRow(name) << constructUuid16 << uuid16 << true << uuid32 << true << uuid128
+ << (QLatin1Char('{') + QLatin1String(s) + QLatin1Char('}'));
+ };
+
+ auto newRow16 = [](const char *name, quint8 a, quint8 b, const char *s) {
+ auto uuid128 = uuid128_32(0, 0, a, b);
+ quint32 uuid32 = a << 8 | b;
+ quint16 uuid16 = a << 8 | b;
+ QTest::newRow(name) << true << uuid16 << true << uuid32 << true << uuid128
+ << (QLatin1Char('{') + QLatin1String(s) + QLatin1Char('}'));
+ };
+
+ newRow32("base uuid", 0x00, 0x00, 0x00, 0x00, "00000000" BASEUUID);
+ newRow16("0x0001", 0x00, 0x01, "00000001" BASEUUID);
+ newRow16("0xffff", 0xff, 0xff, "0000FFFF" BASEUUID);
+ newRow32("0x00010000", 0x00, 0x01, 0x00, 0x00, "00010000" BASEUUID);
+ newRow32("0x0001ffff", 0x00, 0x01, 0xff, 0xff, "0001FFFF" BASEUUID);
+ newRow32("0xffff0000", 0xff, 0xff, 0x00, 0x00, "FFFF0000" BASEUUID);
+ newRow32("0xffffffff", 0xff, 0xff, 0xff, 0xff, "FFFFFFFF" BASEUUID);
{
- quint128 uuid128 = {
+ QUuid::Id128Bytes uuid128 = {
{
0x00, 0x11, 0x22, 0x33,
0x44, 0x55,
@@ -251,7 +224,7 @@ void tst_QBluetoothUuid::tst_conversion()
QFETCH(bool, constructUuid32);
QFETCH(quint32, uuid32);
QFETCH(bool, constructUuid128);
- QFETCH(quint128, uuid128);
+ QFETCH(QUuid::Id128Bytes, uuid128);
QFETCH(QString, uuidS);
int minimumSize = 16;
@@ -260,9 +233,21 @@ void tst_QBluetoothUuid::tst_conversion()
else if (constructUuid32)
minimumSize = 4;
+#if defined(Q_OS_DARWIN)
+#define CHECK_PLATFORM_CONVERSION(qtUuid) \
+ const QMacAutoReleasePool pool; \
+ CBUUID *nativeUuid = qtUuid.toCBUUID(); \
+ QVERIFY(nativeUuid); \
+ QCOMPARE(qtUuid, QBluetoothUuid::fromCBUUID(nativeUuid));
+#else
+#define CHECK_PLATFORM_CONVERSION(qtUuid)
+#endif // Q_OS_DARWIN
+
if (constructUuid16) {
QBluetoothUuid uuid(uuid16);
+ QCOMPARE(uuid, QBluetoothUuid(QStringView{uuidS}));
+
bool ok;
QCOMPARE(uuid.toUInt16(&ok), uuid16);
@@ -271,16 +256,20 @@ void tst_QBluetoothUuid::tst_conversion()
QCOMPARE(uuid.toUInt32(&ok), uuid32);
QVERIFY(ok);
- QVERIFY(memcmp(uuid.toUInt128().data, uuid128.data, 16) == 0);
+ QVERIFY(memcmp(uuid.toBytes().data, uuid128.data, 16) == 0);
QCOMPARE(uuid.toString().toUpper(), uuidS.toUpper());
QCOMPARE(uuid.minimumSize(), minimumSize);
+
+ CHECK_PLATFORM_CONVERSION(uuid)
}
if (constructUuid32) {
QBluetoothUuid uuid(uuid32);
+ QCOMPARE(uuid, QBluetoothUuid(QLatin1StringView{uuidS.toLatin1()}));
+
bool ok;
quint16 tmp = uuid.toUInt16(&ok);
@@ -292,16 +281,20 @@ void tst_QBluetoothUuid::tst_conversion()
QCOMPARE(uuid.toUInt32(&ok), uuid32);
QVERIFY(ok);
- QVERIFY(memcmp(uuid.toUInt128().data, uuid128.data, 16) == 0);
+ QVERIFY(memcmp(uuid.toBytes().data, uuid128.data, 16) == 0);
QCOMPARE(uuid.toString().toUpper(), uuidS.toUpper());
QCOMPARE(uuid.minimumSize(), minimumSize);
+
+ CHECK_PLATFORM_CONVERSION(uuid)
}
if (constructUuid128) {
QBluetoothUuid uuid(uuid128);
+ QCOMPARE(uuid, QBluetoothUuid(QUtf8StringView{uuidS.toUtf8()}));
+
bool ok;
quint16 tmpUuid16 = uuid.toUInt16(&ok);
@@ -314,12 +307,15 @@ void tst_QBluetoothUuid::tst_conversion()
if (ok)
QCOMPARE(tmpUuid32, uuid32);
- QVERIFY(memcmp(uuid.toUInt128().data, uuid128.data, 16) == 0);
+ QVERIFY(memcmp(uuid.toBytes().data, uuid128.data, 16) == 0);
QCOMPARE(uuid.toString().toUpper(), uuidS.toUpper());
QCOMPARE(uuid.minimumSize(), minimumSize);
+
+ CHECK_PLATFORM_CONVERSION(uuid)
}
+#undef CHECK_PLATFORM_CONVERSION
}
void tst_QBluetoothUuid::tst_comparison_data()
@@ -334,7 +330,7 @@ void tst_QBluetoothUuid::tst_comparison()
QFETCH(bool, constructUuid32);
QFETCH(quint32, uuid32);
QFETCH(bool, constructUuid128);
- QFETCH(quint128, uuid128);
+ QFETCH(QUuid::Id128Bytes, uuid128);
QVERIFY(QBluetoothUuid() == QBluetoothUuid());
@@ -367,22 +363,28 @@ void tst_QBluetoothUuid::tst_comparison()
QBluetoothUuid quuid128(uuid128);
for (int var = 0; var < 16; ++var) {
- QVERIFY(quuid128.toUInt128().data[var] == uuid128.data[var]);
+ QVERIFY(quuid128.toBytes().data[var] == uuid128.data[var]);
}
- }
-}
-void tst_QBluetoothUuid::tst_quint128ToUuid()
-{
- QBluetoothUuid temp(QString("{67C8770B-44F1-410A-AB9A-F9B5446F13EE}"));
- quint128 array = temp.toUInt128();
- QBluetoothUuid u(array);
- QVERIFY(temp == u);
-
- QBENCHMARK {
- QBluetoothUuid u(array);
+ // check that toUInt128() call returns the value in the same format as
+ // QUuid::Id128Bytes, no matter what version we use (it can be
+ // QUuid::toUint128() on platforms that define __SIZEOF_INT128__ or
+ // QBluetoothUuid::toUint128() on other platforms).
+ const quint128 i128 = quuid128.toUInt128();
+ static_assert(sizeof(i128) == 16); // uint128 or QUuid::Id128Bytes
+ uchar dst[16];
+ memcpy(dst, &i128, sizeof(i128));
+ for (int var = 0; var < 16; ++var)
+ QCOMPARE_EQ(dst[var], uuid128.data[var]);
+
+ // check that we always have a c-tor taking quint128
+ QBluetoothUuid other{i128};
+ const auto bytes = other.toBytes();
+ for (int var = 0; var < 16; ++var)
+ QCOMPARE_EQ(bytes.data[var], uuid128.data[var]);
}
}
+
QTEST_MAIN(tst_QBluetoothUuid)
#include "tst_qbluetoothuuid.moc"