Warning, /frameworks/bluez-qt/autotests/qml/tst_device.qml is written in an unsupported language. File is not indexed.

0001 /*
0002  * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
0003  *
0004  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005  */
0006 
0007 import QtTest 1.0
0008 import QtQuick 2.2
0009 import org.kde.bluezqt.fakebluez 1.0
0010 import org.kde.bluezqt 1.0 as BluezQt
0011 
0012 TestCase {
0013     name: "Device"
0014     property QtObject manager : BluezQt.Manager;
0015     property var device1props;
0016     property var device2props;
0017 
0018     function initTestCase()
0019     {
0020         FakeBluez.start();
0021         FakeBluez.runTest("bluez-standard");
0022 
0023         // Create adapters
0024         var adapter1path = "/org/bluez/hci0";
0025         var adapter1props = {
0026             Path: adapter1path,
0027             Address: "1C:E5:C3:BC:94:7E",
0028             Name: "TestAdapter",
0029             _toDBusObjectPath: [ "Path" ]
0030         }
0031         FakeBluez.runAction("devicemanager", "create-adapter", adapter1props);
0032 
0033         var adapter2path = "/org/bluez/hci1";
0034         var adapter2props = {
0035             Path: adapter2path,
0036             Address: "2E:3A:C3:BC:85:7C",
0037             Name: "TestAdapter2",
0038             _toDBusObjectPath: [ "Path" ]
0039         }
0040         FakeBluez.runAction("devicemanager", "create-adapter", adapter2props);
0041 
0042         // Create devices
0043         device1props = {
0044             Path: "/org/bluez/hci0/dev_40_79_6A_0C_39_75",
0045             Adapter: adapter1path,
0046             Address: "40:79:6A:0C:39:75",
0047             Name: "TestDevice",
0048             Alias: "TestAlias",
0049             Icon: "phone",
0050             Class: 101,
0051             Appearance:  25,
0052             UUIDs: [ "00001200-0000-1000-8000-00805f9b34fb" ],
0053             Paired: false,
0054             Connected: false,
0055             Trusted: false,
0056             Blocked: false,
0057             LegacyPairing: false,
0058             RSSI: 20,
0059             Modalias: "bluetooth:v001Dp1200d1236",
0060             _toDBusObjectPath: [ "Path", "Adapter" ]
0061         }
0062         FakeBluez.runAction("devicemanager", "create-device", device1props);
0063 
0064         device2props = {
0065             Path: "/org/bluez/hci1/dev_50_79_6A_0C_39_75",
0066             Adapter: adapter2path,
0067             Address: "50:79:6A:0C:39:75",
0068             Name: "TestDevice2",
0069             Alias: "TestAlias2",
0070             Icon: "joypad",
0071             Class: 201,
0072             Appearance:  32,
0073             UUIDs: [ "00001124-0000-1000-8000-00805f9b34fb" ],
0074             Paired: true,
0075             Connected: false,
0076             Trusted: true,
0077             Blocked: false,
0078             LegacyPairing: true,
0079             RSSI: -15,
0080             Modalias: "bluetooth:v001Dp1200d1136",
0081             _toDBusObjectPath: [ "Path", "Adapter" ]
0082         }
0083         FakeBluez.runAction("devicemanager", "create-device", device2props);
0084 
0085         tryCompare(manager, "operational", true);
0086         compare(manager.adapters.length, 2, "adapters-length");
0087         compare(manager.devices.length, 2, "devices-length");
0088     }
0089 
0090     function cleanupTestCase()
0091     {
0092         FakeBluez.stop();
0093     }
0094 
0095     function compareProperties(device, props)
0096     {
0097         compare(device.ubi, props.Path, "ubi");
0098         compare(device.address, props.Address, "address");
0099         compare(device.name, props.Alias, "name");
0100         compare(device.remoteName, props.Name, "remoteName");
0101         compare(device.icon, props.Icon, "icon");
0102         compare(device.deviceClass, props.Class, "deviceClass");
0103         compare(device.appearance, props.Appearance, "appearance");
0104         compare(device.paired, props.Paired, "paired");
0105         compare(device.connected, props.Connected, "connected");
0106         compare(device.trusted, props.Trusted, "trusted");
0107         compare(device.blocked, props.Blocked, "blocked");
0108         compare(device.legacyPairing, props.LegacyPairing, "legacyPairing");
0109         compare(device.rssi, props.RSSI, "rssi");
0110         compare(device.modalias, props.Modalias, "modalias");
0111         compare(device.adapter.ubi, props.Adapter, "adapter");
0112 
0113         for (var i = 0; i < device.uuids.length; ++i) {
0114             compare(device.uuids[i], props.UUIDs[i].toUpperCase(), "uuids" + i);
0115         }
0116     }
0117 
0118     function test_getProperties()
0119     {
0120         var device1 = manager.deviceForUbi(device1props.Path);
0121         var device2 = manager.deviceForUbi(device2props.Path);
0122         compareProperties(device1, device1props);
0123         compareProperties(device2, device2props);
0124     }
0125 
0126     SignalSpy {
0127         id: nameChangedSpy
0128         signalName: "nameChanged"
0129     }
0130 
0131     function test_setName()
0132     {
0133         for (var i = 0; i < manager.devices.length; ++i) {
0134             var device = manager.devices[i];
0135             var value = device.name + "tst_name";
0136 
0137             nameChangedSpy.clear();
0138             nameChangedSpy.target = device;
0139 
0140             device.name = value;
0141 
0142             tryCompare(nameChangedSpy, "count", 1);
0143             compare(device.name, value);
0144         }
0145     }
0146 
0147     SignalSpy {
0148         id: trustedChangedSpy
0149         signalName: "trustedChanged"
0150     }
0151 
0152     function test_setTrusted()
0153     {
0154         for (var i = 0; i < manager.devices.length; ++i) {
0155             var device = manager.devices[i];
0156             var value = !device.trusted;
0157 
0158             trustedChangedSpy.clear();
0159             trustedChangedSpy.target = device;
0160 
0161             device.trusted = value;
0162 
0163             tryCompare(trustedChangedSpy, "count", 1);
0164             compare(device.trusted, value);
0165         }
0166     }
0167 
0168     SignalSpy {
0169         id: managerDeviceRemovedSpy
0170         signalName: "deviceRemoved"
0171     }
0172 
0173     SignalSpy {
0174         id: adapterDeviceRemovedSpy
0175         signalName: "deviceRemoved"
0176     }
0177 
0178     SignalSpy {
0179         id: deviceDeviceRemovedSpy
0180         signalName: "deviceRemoved"
0181     }
0182 
0183     // za prefix to force test order - last
0184     function test_za_DeviceRemoved()
0185     {
0186         while (manager.devices.length > 0) {
0187             var device = manager.devices[0];
0188 
0189             managerDeviceRemovedSpy.clear();
0190             managerDeviceRemovedSpy.target = manager;
0191             adapterDeviceRemovedSpy.clear();
0192             adapterDeviceRemovedSpy.target = device.adapter;
0193             deviceDeviceRemovedSpy.clear();
0194             deviceDeviceRemovedSpy.target = device;
0195 
0196             var props = {
0197                 Path: device.ubi,
0198                 _toDBusObjectPath: [ "Path" ]
0199             }
0200             FakeBluez.runAction("devicemanager", "remove-device", props);
0201 
0202             tryCompare(managerDeviceRemovedSpy, "count", 1);
0203             tryCompare(adapterDeviceRemovedSpy, "count", 1);
0204             tryCompare(deviceDeviceRemovedSpy, "count", 1);
0205         }
0206     }
0207 }
0208