Warning, /frameworks/bluez-qt/autotests/qml/tst_mediaplayer.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: "MediaPlayer" 0014 property QtObject manager : BluezQt.Manager; 0015 property var mediaPlayer1props; 0016 property var mediaPlayer2props; 0017 0018 function initTestCase() 0019 { 0020 FakeBluez.start(); 0021 FakeBluez.runTest("bluez-standard"); 0022 0023 // Create adapter 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 // Create devices 0034 mediaPlayer1props = { 0035 Path: "/org/bluez/hci0/dev_40_79_6A_0C_39_75/player0", 0036 Name: "Player1", 0037 Equalizer: "on", 0038 Repeat: "singletrack", 0039 Shuffle: "group", 0040 Status: "stopped", 0041 Position: 150, 0042 Device: "/org/bluez/hci0/dev_40_79_6A_0C_39_75", 0043 Track: { 0044 Title: "Song1", 0045 Artist: "Band1", 0046 Album: "First Album", 0047 Genre: "Rock", 0048 NumberOfTracks: 24, 0049 TrackNumber: 4, 0050 Duration: 12403 0051 }, 0052 _toDBusObjectPath: [ "Path", "Device" ] 0053 } 0054 var device1props = { 0055 Path: "/org/bluez/hci0/dev_40_79_6A_0C_39_75", 0056 Adapter: adapter1path, 0057 Address: "40:79:6A:0C:39:75", 0058 Name: "TestDevice", 0059 UUIDs: [ "0000110E-0000-1000-8000-00805F9B34FB" ], 0060 MediaPlayer: mediaPlayer1props, 0061 _toDBusObjectPath: [ "Path", "Adapter" ] 0062 } 0063 FakeBluez.runAction("devicemanager", "create-device", device1props); 0064 0065 mediaPlayer2props = { 0066 Path: "/org/bluez/hci0/dev_50_79_6A_0C_39_75/player0", 0067 Name: "Player2", 0068 Equalizer: "off", 0069 Repeat: "alltracks", 0070 Shuffle: "off", 0071 Status: "paused", 0072 Position: 2500, 0073 Device: "/org/bluez/hci0/dev_50_79_6A_0C_39_75", 0074 Track: { 0075 Title: "Song2", 0076 Artist: "Band2", 0077 Album: "Second Album", 0078 Genre: "Heavy Metal", 0079 NumberOfTracks: 666, 0080 TrackNumber: 22, 0081 Duration: 22403 0082 }, 0083 _toDBusObjectPath: [ "Path", "Device" ] 0084 } 0085 var device2props = { 0086 Path: "/org/bluez/hci0/dev_50_79_6A_0C_39_75", 0087 Adapter: adapter1path, 0088 Address: "50:79:6A:0C:39:75", 0089 Name: "TestDevice2", 0090 UUIDs: [ "0000110E-0000-1000-8000-00805F9B34FB" ], 0091 MediaPlayer: mediaPlayer2props, 0092 _toDBusObjectPath: [ "Path", "Adapter" ] 0093 } 0094 FakeBluez.runAction("devicemanager", "create-device", device2props); 0095 0096 tryCompare(manager, "operational", true); 0097 compare(manager.adapters.length, 1, "adapters-length"); 0098 compare(manager.devices.length, 2, "devices-length"); 0099 } 0100 0101 function cleanupTestCase() 0102 { 0103 FakeBluez.stop(); 0104 } 0105 0106 SignalSpy { 0107 id: mediaPlayerChangedSpy 0108 signalName: "mediaPlayerChanged" 0109 } 0110 0111 function test_a_connect() 0112 { 0113 for (var i = 0; i < manager.devices.length; ++i) { 0114 var device = manager.devices[i]; 0115 verify(!device.mediaPlayer); 0116 0117 mediaPlayerChangedSpy.clear(); 0118 mediaPlayerChangedSpy.target = device; 0119 0120 device.connectToDevice(); 0121 0122 tryCompare(mediaPlayerChangedSpy, "count", 1, 100 * 1000); 0123 verify(device.mediaPlayer); 0124 } 0125 } 0126 0127 function compareProperties(mediaPlayer, props) 0128 { 0129 compare(mediaPlayer.name, props.Name, "name"); 0130 compare(equalizerString(mediaPlayer), props.Equalizer, "equalizer"); 0131 compare(repeatString(mediaPlayer), props.Repeat, "repeat"); 0132 compare(shuffleString(mediaPlayer), props.Shuffle, "shuffle"); 0133 compare(statusString(mediaPlayer), props.Status, "status"); 0134 compare(mediaPlayer.position, props.Position, "position"); 0135 0136 compare(mediaPlayer.track.title, props.Track.Title, "track-title"); 0137 compare(mediaPlayer.track.artist, props.Track.Artist, "track-artist"); 0138 compare(mediaPlayer.track.album, props.Track.Album, "track-album"); 0139 compare(mediaPlayer.track.genre, props.Track.Genre, "track-genre"); 0140 compare(mediaPlayer.track.numberOfTracks, props.Track.NumberOfTracks, "track-#tracks"); 0141 compare(mediaPlayer.track.trackNumber, props.Track.TrackNumber, "track-trackNumber"); 0142 compare(mediaPlayer.track.duration, props.Track.Duration, "track-duration"); 0143 } 0144 0145 function test_getProperties() 0146 { 0147 var mediaPlayer1 = manager.deviceForUbi(mediaPlayer1props.Device).mediaPlayer; 0148 var mediaPlayer2 = manager.deviceForUbi(mediaPlayer2props.Device).mediaPlayer; 0149 compareProperties(mediaPlayer1, mediaPlayer1props); 0150 compareProperties(mediaPlayer2, mediaPlayer2props); 0151 } 0152 0153 SignalSpy { 0154 id: equalizerChangedSpy 0155 signalName: "equalizerChanged" 0156 } 0157 0158 function test_setEqualizer() 0159 { 0160 for (var i = 0; i < manager.devices.length; ++i) { 0161 var mediaPlayer = manager.devices[i].mediaPlayer; 0162 var value = mediaPlayer.equalizer === BluezQt.MediaPlayer.EqualizerOff ? 0163 BluezQt.MediaPlayer.EqualizerOn : BluezQt.MediaPlayer.EqualizerOff; 0164 0165 equalizerChangedSpy.clear(); 0166 equalizerChangedSpy.target = mediaPlayer; 0167 0168 mediaPlayer.equalizer = value; 0169 0170 tryCompare(equalizerChangedSpy, "count", 1); 0171 compare(mediaPlayer.equalizer, value); 0172 } 0173 } 0174 0175 SignalSpy { 0176 id: repeatChangedSpy 0177 signalName: "repeatChanged" 0178 } 0179 0180 function test_setRepeat() 0181 { 0182 for (var i = 0; i < manager.devices.length; ++i) { 0183 var mediaPlayer = manager.devices[i].mediaPlayer; 0184 var value = mediaPlayer.repeat === BluezQt.MediaPlayer.RepeatGroup ? 0185 BluezQt.MediaPlayer.RepeatSingleTrack : BluezQt.MediaPlayer.RepeatGroup; 0186 0187 repeatChangedSpy.clear(); 0188 repeatChangedSpy.target = mediaPlayer; 0189 0190 mediaPlayer.repeat = value; 0191 0192 tryCompare(repeatChangedSpy, "count", 1); 0193 compare(mediaPlayer.repeat, value); 0194 } 0195 } 0196 0197 SignalSpy { 0198 id: shuffleChangedSpy 0199 signalName: "shuffleChanged" 0200 } 0201 0202 function test_setShuffle() 0203 { 0204 for (var i = 0; i < manager.devices.length; ++i) { 0205 var mediaPlayer = manager.devices[i].mediaPlayer; 0206 var value = mediaPlayer.shuffle === BluezQt.MediaPlayer.ShuffleAllTracks ? 0207 BluezQt.MediaPlayer.ShuffleOff : BluezQt.MediaPlayer.ShuffleAllTracks; 0208 0209 shuffleChangedSpy.clear(); 0210 shuffleChangedSpy.target = mediaPlayer; 0211 0212 mediaPlayer.shuffle = value; 0213 0214 tryCompare(shuffleChangedSpy, "count", 1); 0215 compare(mediaPlayer.shuffle, value); 0216 } 0217 } 0218 0219 SignalSpy { 0220 id: trackChangedSpy 0221 signalName: "trackChanged" 0222 } 0223 0224 function test_za_changeTrack() 0225 { 0226 for (var i = 0; i < manager.devices.length; ++i) { 0227 var mediaPlayer = manager.devices[i].mediaPlayer; 0228 0229 trackChangedSpy.target = mediaPlayer; 0230 0231 trackChangedSpy.clear(); 0232 mediaPlayer.next(); 0233 tryCompare(trackChangedSpy, "count", 1); 0234 compare(mediaPlayer.track.valid, true); 0235 0236 trackChangedSpy.clear(); 0237 mediaPlayer.previous(); 0238 tryCompare(trackChangedSpy, "count", 1); 0239 compare(mediaPlayer.track.valid, true); 0240 } 0241 } 0242 0243 SignalSpy { 0244 id: statusChangedSpy 0245 signalName: "statusChanged" 0246 } 0247 0248 function test_zb_changeStatus() 0249 { 0250 for (var i = 0; i < manager.devices.length; ++i) { 0251 var mediaPlayer = manager.devices[i].mediaPlayer; 0252 0253 statusChangedSpy.clear(); 0254 statusChangedSpy.target = mediaPlayer; 0255 0256 if (mediaPlayer.status !== BluezQt.MediaPlayer.Stopped) { 0257 mediaPlayer.stop(); 0258 tryCompare(statusChangedSpy, "count", 1); 0259 compare(mediaPlayer.status, BluezQt.MediaPlayer.Stopped); 0260 } 0261 0262 statusChangedSpy.clear(); 0263 mediaPlayer.play(); 0264 tryCompare(statusChangedSpy, "count", 1); 0265 compare(mediaPlayer.status, BluezQt.MediaPlayer.Playing); 0266 0267 statusChangedSpy.clear(); 0268 mediaPlayer.pause(); 0269 tryCompare(statusChangedSpy, "count", 1); 0270 compare(mediaPlayer.status, BluezQt.MediaPlayer.Paused); 0271 0272 statusChangedSpy.clear(); 0273 mediaPlayer.fastForward(); 0274 tryCompare(statusChangedSpy, "count", 1); 0275 compare(mediaPlayer.status, BluezQt.MediaPlayer.ForwardSeek); 0276 0277 statusChangedSpy.clear(); 0278 mediaPlayer.rewind(); 0279 tryCompare(statusChangedSpy, "count", 1); 0280 compare(mediaPlayer.status, BluezQt.MediaPlayer.ReverseSeek); 0281 0282 statusChangedSpy.clear(); 0283 mediaPlayer.stop(); 0284 tryCompare(statusChangedSpy, "count", 1); 0285 compare(mediaPlayer.status, BluezQt.MediaPlayer.Stopped); 0286 } 0287 } 0288 0289 function test_zz_disconnect() 0290 { 0291 for (var i = 0; i < manager.devices.length; ++i) { 0292 var device = manager.devices[i]; 0293 verify(device.mediaPlayer); 0294 0295 mediaPlayerChangedSpy.clear(); 0296 mediaPlayerChangedSpy.target = device; 0297 0298 device.disconnectFromDevice(); 0299 0300 tryCompare(mediaPlayerChangedSpy, "count", 1, 100 * 1000); 0301 verify(!device.mediaPlayer); 0302 } 0303 } 0304 0305 0306 function equalizerString(mediaPlayer) 0307 { 0308 switch (mediaPlayer.equalizer) { 0309 case BluezQt.MediaPlayer.EqualizerOn: 0310 return "on"; 0311 default: 0312 return "off"; 0313 } 0314 } 0315 0316 function repeatString(mediaPlayer) 0317 { 0318 switch (mediaPlayer.repeat) { 0319 case BluezQt.MediaPlayer.RepeatSingleTrack: 0320 return "singletrack"; 0321 case BluezQt.MediaPlayer.RepeatAllTracks: 0322 return "alltracks"; 0323 case BluezQt.MediaPlayer.RepeatGroup: 0324 return "group"; 0325 default: 0326 return "off"; 0327 } 0328 } 0329 0330 function shuffleString(mediaPlayer) 0331 { 0332 switch (mediaPlayer.shuffle) { 0333 case BluezQt.MediaPlayer.ShuffleAllTracks: 0334 return "alltracks"; 0335 case BluezQt.MediaPlayer.ShuffleGroup: 0336 return "group"; 0337 default: 0338 return "off"; 0339 } 0340 } 0341 0342 function statusString(mediaPlayer) 0343 { 0344 switch (mediaPlayer.status) { 0345 case BluezQt.MediaPlayer.Playing: 0346 return "playing"; 0347 case BluezQt.MediaPlayer.Stopped: 0348 return "stopped"; 0349 case BluezQt.MediaPlayer.Paused: 0350 return "paused"; 0351 case BluezQt.MediaPlayer.ForwardSeek: 0352 return "forward-seek"; 0353 case BluezQt.MediaPlayer.ReverseSeek: 0354 return "reverse-seek"; 0355 default: 0356 return "error"; 0357 } 0358 } 0359 } 0360