OLD | NEW |
1 <!DOCTYPE html> | 1 <!DOCTYPE html> |
2 <script src="../resources/testharness.js"></script> | 2 <script src="../resources/testharness.js"></script> |
3 <script src="../resources/testharness-helpers.js"></script> | |
4 <script src="../resources/testharnessreport.js"></script> | 3 <script src="../resources/testharnessreport.js"></script> |
5 <script src="resources/bluetooth-helpers.js"></script> | 4 <script src="resources/bluetooth-helpers.js"></script> |
6 <script> | 5 <script> |
7 'use strict'; | 6 'use strict'; |
8 | 7 |
9 test(t => { assert_true(window.testRunner instanceof Object); t.done(); }, | 8 test(t => { assert_true(window.testRunner instanceof Object); t.done(); }, |
10 'window.testRunner is required for the following tests.'); | 9 'window.testRunner is required for the following tests.'); |
11 | 10 |
12 sequential_promise_test(() => { | 11 promise_test(() => { |
13 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 12 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
14 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 13 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
15 .then(device => device.connectGATT()) | 14 .then(device => device.connectGATT()) |
16 .then(gattServer => gattServer.getPrimaryService('generic_access')) | 15 .then(gattServer => gattServer.getPrimaryService('generic_access')) |
17 .then(service => { | 16 .then(service => { |
18 testRunner.setBluetoothMockDataSet('EmptyAdapter'); | 17 testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
19 return assert_promise_rejects_with_message( | 18 return assert_promise_rejects_with_message( |
20 service.getCharacteristic('gap.device_name'), { | 19 service.getCharacteristic('gap.device_name'), { |
21 name: 'NetworkError', | 20 name: 'NetworkError', |
22 message: 'Bluetooth Device is no longer in range.' | 21 message: 'Bluetooth Device is no longer in range.' |
23 }, 'Device went out of range.'); | 22 }, 'Device went out of range.'); |
24 }); | 23 }); |
25 }, 'Device goes out of range. Reject with NetworkError.'); | 24 }, 'Device goes out of range. Reject with NetworkError.'); |
26 | 25 |
27 sequential_promise_test(() => { | 26 promise_test(() => { |
28 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 27 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
29 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 28 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
30 .then(device => device.connectGATT()) | 29 .then(device => device.connectGATT()) |
31 .then(gattService => gattService.getPrimaryService('generic_access')) | 30 .then(gattService => gattService.getPrimaryService('generic_access')) |
32 .then(service => { | 31 .then(service => { |
33 testRunner.setBluetoothMockDataSet('MissingServiceGenericAccessAdapter'); | 32 testRunner.setBluetoothMockDataSet('MissingServiceGenericAccessAdapter'); |
34 return assert_promise_rejects_with_message( | 33 return assert_promise_rejects_with_message( |
35 service.getCharacteristic('gap.device_name'), { | 34 service.getCharacteristic('gap.device_name'), { |
36 name: 'InvalidStateError', | 35 name: 'InvalidStateError', |
37 message: 'GATT Service no longer exists.' | 36 message: 'GATT Service no longer exists.' |
38 }, 'Service got removed.'); | 37 }, 'Service got removed.'); |
39 }); | 38 }); |
40 }, 'Service is removed. Reject with InvalidStateError.'); | 39 }, 'Service is removed. Reject with InvalidStateError.'); |
41 | 40 |
42 | 41 |
43 sequential_promise_test(() => { | 42 promise_test(() => { |
44 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 43 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
45 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 44 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
46 .then(device => device.connectGATT()) | 45 .then(device => device.connectGATT()) |
47 .then(gattServer => gattServer.getPrimaryService('generic_access')) | 46 .then(gattServer => gattServer.getPrimaryService('generic_access')) |
48 .then(service => Promise.all( | 47 .then(service => Promise.all( |
49 [service.getCharacteristic(battery_level.alias), | 48 [service.getCharacteristic(battery_level.alias), |
50 service.getCharacteristic(battery_level.name), | 49 service.getCharacteristic(battery_level.name), |
51 service.getCharacteristic(battery_level.uuid)])) | 50 service.getCharacteristic(battery_level.uuid)])) |
52 .then(characteristics => { | 51 .then(characteristics => { |
53 characteristics.forEach(characteristic => { | 52 characteristics.forEach(characteristic => { |
54 assert_equals(characteristic, null, | 53 assert_equals(characteristic, null, |
55 'Non existent characteristic should return null.'); | 54 'Non existent characteristic should return null.'); |
56 }); | 55 }); |
57 }); | 56 }); |
58 }, 'Request for wrong characteristic. Should return null.'); | 57 }, 'Request for wrong characteristic. Should return null.'); |
59 | 58 |
60 sequential_promise_test(() => { | 59 promise_test(() => { |
61 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 60 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
62 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 61 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
63 .then(device => device.connectGATT()) | 62 .then(device => device.connectGATT()) |
64 .then(gattServer => gattServer.getPrimaryService('generic_access')) | 63 .then(gattServer => gattServer.getPrimaryService('generic_access')) |
65 .then(service => Promise.all( | 64 .then(service => Promise.all( |
66 [service.getCharacteristic(device_name.alias), | 65 [service.getCharacteristic(device_name.alias), |
67 service.getCharacteristic(device_name.name), | 66 service.getCharacteristic(device_name.name), |
68 service.getCharacteristic(device_name.uuid)])) | 67 service.getCharacteristic(device_name.uuid)])) |
69 .then(characteristics => { | 68 .then(characteristics => { |
70 characteristics.forEach(characteristic => { | 69 characteristics.forEach(characteristic => { |
71 assert_equals( | 70 assert_equals( |
72 characteristic.uuid, device_name.uuid, | 71 characteristic.uuid, device_name.uuid, |
73 'Characteristic UUID should be the same as requested UUID.'); | 72 'Characteristic UUID should be the same as requested UUID.'); |
74 }); | 73 }); |
75 }); | 74 }); |
76 }, 'Request for characteristic. Should return right characteristic'); | 75 }, 'Request for characteristic. Should return right characteristic'); |
77 | 76 |
78 sequential_promise_test(() => { | 77 promise_test(() => { |
79 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 78 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
80 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 79 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
81 .then(device => device.connectGATT()) | 80 .then(device => device.connectGATT()) |
82 .then(gattServer => gattServer.getPrimaryService('generic_access')) | 81 .then(gattServer => gattServer.getPrimaryService('generic_access')) |
83 .then(services => Promise.all( | 82 .then(services => Promise.all( |
84 [services.getCharacteristic(device_name.alias), | 83 [services.getCharacteristic(device_name.alias), |
85 services.getCharacteristic(device_name.alias), | 84 services.getCharacteristic(device_name.alias), |
86 services.getCharacteristic(device_name.name), | 85 services.getCharacteristic(device_name.name), |
87 services.getCharacteristic(device_name.name), | 86 services.getCharacteristic(device_name.name), |
88 services.getCharacteristic(device_name.uuid), | 87 services.getCharacteristic(device_name.uuid), |
89 services.getCharacteristic(device_name.uuid)])) | 88 services.getCharacteristic(device_name.uuid)])) |
90 .then(characteristics => { | 89 .then(characteristics => { |
91 // TODO(ortuno): getCharacteristic should return the same object | 90 // TODO(ortuno): getCharacteristic should return the same object |
92 // if it was created earlier. | 91 // if it was created earlier. |
93 // https://crbug.com/495270 | 92 // https://crbug.com/495270 |
94 for (var i = 1; i < characteristics.length; i++) { | 93 for (var i = 1; i < characteristics.length; i++) { |
95 assert_not_equals( | 94 assert_not_equals( |
96 characteristics[0], characteristics[i], | 95 characteristics[0], characteristics[i], |
97 'Should return the same characteristic as the first call.'); | 96 'Should return the same characteristic as the first call.'); |
98 } | 97 } |
99 }); | 98 }); |
100 }, 'Calls to get the same characteristic should return the same object.'); | 99 }, 'Calls to get the same characteristic should return the same object.'); |
101 | 100 |
102 sequential_promise_test(() => { | 101 promise_test(() => { |
103 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); | 102 testRunner.setBluetoothMockDataSet('GenericAccessAdapter'); |
104 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) | 103 return requestDeviceWithKeyDown({filters: [{services: ['generic_access']}]}) |
105 .then(device => device.connectGATT()) | 104 .then(device => device.connectGATT()) |
106 .then(gattServer => gattServer.getPrimaryService('generic_access')) | 105 .then(gattServer => gattServer.getPrimaryService('generic_access')) |
107 .then(service => { | 106 .then(service => { |
108 return assert_promise_rejects_with_message( | 107 return assert_promise_rejects_with_message( |
109 service.getCharacteristic('wrong_name'), { | 108 service.getCharacteristic('wrong_name'), { |
110 name: 'SyntaxError', | 109 name: 'SyntaxError', |
111 message: 'Failed to execute \'getCharacteristic\' on ' + | 110 message: 'Failed to execute \'getCharacteristic\' on ' + |
112 '\'BluetoothGATTService\': \Invalid Characteristic name: ' + | 111 '\'BluetoothGATTService\': \Invalid Characteristic name: ' + |
113 '\'wrong_name\'.' | 112 '\'wrong_name\'.' |
114 }, 'Wrong Characteristic name passed.'); | 113 }, 'Wrong Characteristic name passed.'); |
115 }); | 114 }); |
116 }, 'Wrong Characteristic name. Reject with SyntaxError.'); | 115 }, 'Wrong Characteristic name. Reject with SyntaxError.'); |
117 </script> | 116 </script> |
OLD | NEW |