Warning, file /frameworks/bluez-qt/autotests/mediatest.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: 2018 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 "mediatest.h" 0008 #include "a2dp-codecs.h" 0009 #include "autotests.h" 0010 #include "initmanagerjob.h" 0011 #include "manager.h" 0012 #include "media.h" 0013 #include "pendingcall.h" 0014 0015 #include <QDBusObjectPath> 0016 #include <QSignalSpy> 0017 0018 namespace BluezQt 0019 { 0020 extern void bluezqt_initFakeBluezTestRun(); 0021 } 0022 0023 using namespace BluezQt; 0024 0025 void TestEndpoint::release() 0026 { 0027 m_releaseCalled = true; 0028 } 0029 0030 void MediaTest::initTestCase() 0031 { 0032 bluezqt_initFakeBluezTestRun(); 0033 FakeBluez::start(); 0034 FakeBluez::runTest(QStringLiteral("bluez-standard")); 0035 0036 // Create adapter 0037 QString adapter = QStringLiteral("/org/bluez/hci0"); 0038 QVariantMap adapterProps; 0039 adapterProps[QStringLiteral("Path")] = QVariant::fromValue(QDBusObjectPath(adapter)); 0040 adapterProps[QStringLiteral("Address")] = QStringLiteral("1C:E5:C3:BC:94:7E"); 0041 adapterProps[QStringLiteral("Name")] = QStringLiteral("TestAdapter"); 0042 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("create-adapter"), adapterProps); 0043 0044 Manager *manager = new Manager(this); 0045 InitManagerJob *initJob = manager->init(); 0046 initJob->exec(); 0047 QVERIFY(!initJob->error()); 0048 QCOMPARE(manager->adapters().count(), 1); 0049 0050 m_adapter = manager->adapters().at(0); 0051 QVERIFY(m_adapter->media()); 0052 0053 m_endpoint = new TestEndpoint({MediaEndpoint::Role::AudioSink, MediaEndpoint::Codec::Sbc}, this); 0054 m_adapter->media()->registerEndpoint(m_endpoint)->waitForFinished(); 0055 } 0056 0057 void MediaTest::cleanupTestCase() 0058 { 0059 FakeBluez::stop(); 0060 } 0061 0062 void MediaTest::setConfigurationTest() 0063 { 0064 QSignalSpy endpointSpy(m_endpoint, SIGNAL(configurationSet(QString, QVariantMap))); 0065 0066 QVariantMap props; 0067 props.insert(QStringLiteral("Key"), QVariant::fromValue(int(123))); 0068 0069 QVariantMap params; 0070 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0071 params.insert(QStringLiteral("Transport"), QVariant::fromValue(m_endpoint->objectPath())); 0072 params.insert(QStringLiteral("Properties"), props); 0073 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-media:set-configuration"), params); 0074 endpointSpy.wait(); 0075 auto args = endpointSpy.takeFirst(); 0076 QCOMPARE(args.at(0).toString(), m_endpoint->objectPath().path()); 0077 QCOMPARE(args.at(1).value<QVariantMap>(), props); 0078 } 0079 0080 void MediaTest::selectConfigurationTest() 0081 { 0082 QSignalSpy endpointSpy(m_endpoint, SIGNAL(configurationSelected(QByteArray, QByteArray))); 0083 0084 a2dp_sbc_t sbcConfiguration; 0085 sbcConfiguration.frequency = SBC_SAMPLING_FREQ_44100; 0086 sbcConfiguration.channel_mode = SBC_CHANNEL_MODE_STEREO; 0087 sbcConfiguration.block_length = SBC_BLOCK_LENGTH_16; 0088 sbcConfiguration.subbands = SBC_SUBBANDS_8; 0089 sbcConfiguration.allocation_method = SBC_ALLOCATION_LOUDNESS; 0090 sbcConfiguration.min_bitpool = 2; 0091 sbcConfiguration.max_bitpool = 53; 0092 0093 QVariantMap params; 0094 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0095 params.insert(QStringLiteral("Capabilities"), QByteArray(reinterpret_cast<const char *>(&sbcCapabilities), sizeof(sbcCapabilities))); 0096 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-media:select-configuration"), params); 0097 endpointSpy.wait(); 0098 auto args = endpointSpy.takeFirst(); 0099 QCOMPARE(args.at(0).toByteArray(), QByteArray(reinterpret_cast<const char *>(&sbcCapabilities), sizeof(sbcCapabilities))); 0100 QCOMPARE(args.at(1).toByteArray(), QByteArray(reinterpret_cast<const char *>(&sbcConfiguration), sizeof(sbcConfiguration))); 0101 0102 params.insert(QStringLiteral("Capabilities"), QByteArray()); 0103 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-media:select-configuration"), params); 0104 endpointSpy.wait(); 0105 args = endpointSpy.takeFirst(); 0106 QCOMPARE(args.at(0).toByteArray(), QByteArray()); 0107 QCOMPARE(args.at(1).toByteArray(), QByteArray()); 0108 } 0109 0110 void MediaTest::clearConfigurationTest() 0111 { 0112 QSignalSpy endpointSpy(m_endpoint, SIGNAL(configurationCleared(QString))); 0113 0114 QVariantMap params; 0115 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0116 params.insert(QStringLiteral("Transport"), QVariant::fromValue(m_endpoint->objectPath())); 0117 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-media:clear-configuration"), params); 0118 endpointSpy.wait(); 0119 auto args = endpointSpy.takeFirst(); 0120 QCOMPARE(args.at(0).toString(), m_endpoint->objectPath().path()); 0121 } 0122 0123 void MediaTest::releaseTest() 0124 { 0125 QCOMPARE(m_endpoint->m_releaseCalled, false); 0126 0127 QVariantMap params; 0128 params.insert(QStringLiteral("AdapterPath"), QVariant::fromValue(QDBusObjectPath(m_adapter->ubi()))); 0129 FakeBluez::runAction(QStringLiteral("devicemanager"), QStringLiteral("adapter-media:release"), params); 0130 0131 QTRY_COMPARE(m_endpoint->m_releaseCalled, true); 0132 } 0133 0134 QTEST_MAIN(MediaTest)