Warning, file /frameworks/bluez-qt/autotests/gattmanagertest.cpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019 Manuel Weichselbaumer <mincequi@web.de> 0003 * 0004 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0005 */ 0006 0007 #include "gattmanagertest.h" 0008 #include "autotests.h" 0009 #include "gattmanager.h" 0010 #include "gattservice.h" 0011 #include "initmanagerjob.h" 0012 #include "manager.h" 0013 #include "pendingcall.h" 0014 0015 #include <QDBusObjectPath> 0016 0017 namespace BluezQt 0018 { 0019 extern void bluezqt_initFakeBluezTestRun(); 0020 } 0021 0022 using namespace BluezQt; 0023 0024 void GattManagerTest::initTestCase() 0025 { 0026 bluezqt_initFakeBluezTestRun(); 0027 FakeBluez::start(); 0028 FakeBluez::runTest(QStringLiteral("bluez-standard")); 0029 0030 // Create adapter 0031 QString adapter = QStringLiteral("/org/bluez/hci0"); 0032 QVariantMap adapterProps; 0033 adapterProps[QStringLiteral("Path")] = QVariant::fromValue(QDBusObjectPath(adapter)); 0034 adapterProps[QStringLiteral("Address")] = QStringLiteral("1C:E5:C3:BC:94:7E"); 0035 adapterProps[QStringLiteral("Name")] = QStringLiteral("TestAdapter"); 0036 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("create-adapter"), adapterProps); 0037 0038 Manager *manager = new Manager(this); 0039 InitManagerJob *initJob = manager->init(); 0040 initJob->exec(); 0041 QVERIFY(!initJob->error()); 0042 QCOMPARE(manager->adapters().count(), 1); 0043 0044 m_adapter = manager->adapters().at(0); 0045 QVERIFY(m_adapter->gattManager()); 0046 0047 m_application = new GattApplication(QStringLiteral("/org/kde/bluezqt"), this); 0048 auto service = new GattService(QStringLiteral("ad100000-d901-11e8-9f8b-f2801f1b9fd1"), true, m_application); 0049 m_characteristic = new GattCharacteristic(QStringLiteral("ad10e100-d901-11e8-9f8b-f2801f1b9fd1"), service); 0050 m_adapter->gattManager()->registerApplication(m_application)->waitForFinished(); 0051 0052 // Let FakeBluez read local characteristic 0053 QVariantMap params; 0054 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0055 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-gattmanager:get-objects"), params); 0056 // Process events to let getManagedObjects call from FakeBluez be finished 0057 QTest::qWait(0); 0058 } 0059 0060 void GattManagerTest::cleanupTestCase() 0061 { 0062 FakeBluez::stop(); 0063 } 0064 0065 void GattManagerTest::readCharcTest() 0066 { 0067 QCOMPARE(m_characteristic->readValue(), QByteArray()); 0068 0069 bool readCallbackCalled = false; 0070 m_characteristic->setReadCallback([&readCallbackCalled]() { 0071 readCallbackCalled = true; 0072 return QByteArray("1234"); 0073 }); 0074 QVariantMap params; 0075 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0076 params.insert(QStringLiteral("Options"), QVariant::fromValue(QVariantMap())); 0077 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-gattmanager:read-charc"), params); 0078 0079 QTRY_COMPARE(readCallbackCalled, true); 0080 QTRY_COMPARE(m_characteristic->readValue(), QByteArray("1234")); 0081 } 0082 0083 void GattManagerTest::writeCharcTest() 0084 { 0085 m_characteristic->setReadCallback(nullptr); 0086 0087 QVariantMap params; 0088 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0089 params.insert(QStringLiteral("Value"), QVariant::fromValue(QByteArray("4321"))); 0090 params.insert(QStringLiteral("Options"), QVariant::fromValue(QVariantMap())); 0091 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-gattmanager:write-charc"), params); 0092 0093 QTRY_COMPARE(m_characteristic->readValue(), QByteArray("4321")); 0094 } 0095 0096 QTEST_MAIN(GattManagerTest)