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> | 3 <script src="../resources/testharness-helpers.js"></script> |
4 <script src="../resources/testharnessreport.js"></script> | 4 <script src="../resources/testharnessreport.js"></script> |
5 <script src="bluetooth-helpers.js"></script> | 5 <script src="bluetooth-helpers.js"></script> |
6 <script> | 6 <script> |
7 test(function(t) { assert_true(window.testRunner instanceof Object); t.done(); }
, | 7 test(function(t) { assert_true(window.testRunner instanceof Object); t.done(); }
, |
8 "window.testRunner is required for the following tests."); | 8 "window.testRunner is required for the following tests."); |
9 | 9 |
10 sequential_promise_test(function() { | 10 promise_test(function() { |
11 testRunner.setBluetoothMockDataSet('EmptyAdapter'); | 11 testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
12 return assert_promise_rejects(navigator.bluetooth.requestDevice(), | 12 return assert_promise_rejects(navigator.bluetooth.requestDevice(), |
13 new TypeError()); | 13 new TypeError()); |
14 }, 'Requires an argument.'); | 14 }, 'Requires an argument.'); |
15 | 15 |
16 sequential_promise_test(function() { | 16 promise_test(function() { |
17 testRunner.setBluetoothMockDataSet('EmptyAdapter'); | 17 testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
18 return assert_promise_rejects(navigator.bluetooth.requestDevice({}), | 18 return assert_promise_rejects(navigator.bluetooth.requestDevice({}), |
19 new TypeError()); | 19 new TypeError()); |
20 }, 'RequestDeviceOptions requires a |filters| member.'); | 20 }, 'RequestDeviceOptions requires a |filters| member.'); |
21 | 21 |
22 sequential_promise_test(function() { | 22 promise_test(function() { |
23 testRunner.setBluetoothMockDataSet('EmptyAdapter'); | 23 testRunner.setBluetoothMockDataSet('EmptyAdapter'); |
24 return navigator.bluetooth.requestDevice({ | 24 return navigator.bluetooth.requestDevice({ |
25 filters: [{services: [genericAccessServiceUuid]}] | 25 filters: [{services: [genericAccessServiceUuid]}] |
26 }).then(function() { | 26 }).then(function() { |
27 assert_unreached('Expected no devices but one was returned.'); | 27 assert_unreached('Expected no devices but one was returned.'); |
28 }, function(e) { | 28 }, function(e) { |
29 assert_equals(e.name, 'NotFoundError'); | 29 assert_equals(e.name, 'NotFoundError'); |
30 assert_equals(e.message, 'No Bluetooth devices in range.'); | 30 assert_equals(e.message, 'No Bluetooth devices in range.'); |
31 }); | 31 }); |
32 }, 'Reject with NotFoundError.'); | 32 }, 'Reject with NotFoundError.'); |
33 | 33 |
34 sequential_promise_test(function() { | 34 promise_test(function() { |
35 testRunner.setBluetoothMockDataSet('SingleEmptyDeviceAdapter'); | 35 testRunner.setBluetoothMockDataSet('SingleEmptyDeviceAdapter'); |
36 return navigator.bluetooth.requestDevice({ | 36 return navigator.bluetooth.requestDevice({ |
37 filters: [{services: [genericAccessServiceUuid]}] | 37 filters: [{services: [genericAccessServiceUuid]}] |
38 }).then(function(device) { | 38 }).then(function(device) { |
39 assert_equals(device.constructor.name, "BluetoothDevice"); | 39 assert_equals(device.constructor.name, "BluetoothDevice"); |
40 }); | 40 }); |
41 }, 'Mock will resolve.'); | 41 }, 'Mock will resolve.'); |
42 | 42 |
43 sequential_promise_test(function() { | 43 promise_test(function() { |
44 testRunner.setBluetoothMockDataSet('ScanFilterCheckingAdapter'); | 44 testRunner.setBluetoothMockDataSet('ScanFilterCheckingAdapter'); |
45 // The work of this test is done in the ScanFilterCheckingAdapter. It asserts | 45 // The work of this test is done in the ScanFilterCheckingAdapter. It asserts |
46 // that this requestDevice() call tells the platform to scan for only devices | 46 // that this requestDevice() call tells the platform to scan for only devices |
47 // that include the Battery, Glucose, or Heart Rate services. | 47 // that include the Battery, Glucose, or Heart Rate services. |
48 return navigator.bluetooth.requestDevice({ | 48 return navigator.bluetooth.requestDevice({ |
49 filters: [ | 49 filters: [ |
50 {services: [batteryServiceUuid]}, | 50 {services: [batteryServiceUuid]}, |
51 {services: [glucoseServiceUuid, heartRateServiceUuid]} | 51 {services: [glucoseServiceUuid, heartRateServiceUuid]} |
52 ], | 52 ], |
53 // The optionalServices shouldn't affect the platform's scan. | 53 // The optionalServices shouldn't affect the platform's scan. |
54 optionalServices: [genericAccessServiceUuid] | 54 optionalServices: [genericAccessServiceUuid] |
55 }); | 55 }); |
56 }, 'Filters restrict the platform\'s Bluetooth scan.'); | 56 }, 'Filters restrict the platform\'s Bluetooth scan.'); |
57 | 57 |
58 sequential_promise_test(function() { | 58 promise_test(function() { |
59 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); | 59 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); |
60 return navigator.bluetooth.requestDevice({ | 60 return navigator.bluetooth.requestDevice({ |
61 filters: [{services: [glucoseServiceUuid]}] | 61 filters: [{services: [glucoseServiceUuid]}] |
62 }).then(function(device) { | 62 }).then(function(device) { |
63 assert_equals(device.name, "Glucose Device"); | 63 assert_equals(device.name, "Glucose Device"); |
64 }); | 64 }); |
65 }, 'Simple filter selects matching device.'); | 65 }, 'Simple filter selects matching device.'); |
66 | 66 |
67 sequential_promise_test(function() { | 67 promise_test(function() { |
68 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); | 68 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); |
69 return navigator.bluetooth.requestDevice({ | 69 return navigator.bluetooth.requestDevice({ |
70 filters: [{services: [genericAccessServiceUuid, heartRateServiceUuid]}] | 70 filters: [{services: [genericAccessServiceUuid, heartRateServiceUuid]}] |
71 }).then(function(device) { | 71 }).then(function(device) { |
72 assert_equals(device.name, "Heart Rate Device"); | 72 assert_equals(device.name, "Heart Rate Device"); |
73 }); | 73 }); |
74 }, 'Filter with 2 services returns a matching device.'); | 74 }, 'Filter with 2 services returns a matching device.'); |
75 | 75 |
76 sequential_promise_test(function() { | 76 promise_test(function() { |
77 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); | 77 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); |
78 return navigator.bluetooth.requestDevice({ | 78 return navigator.bluetooth.requestDevice({ |
79 filters: [{services: [batteryServiceUuid]}, | 79 filters: [{services: [batteryServiceUuid]}, |
80 {services: [heartRateServiceUuid]}] | 80 {services: [heartRateServiceUuid]}] |
81 }).then(function(device) { | 81 }).then(function(device) { |
82 assert_equals(device.name, "Heart Rate Device"); | 82 assert_equals(device.name, "Heart Rate Device"); |
83 }); | 83 }); |
84 }, 'An extra filter doesn\'t prevent matching.'); | 84 }, 'An extra filter doesn\'t prevent matching.'); |
85 | 85 |
86 sequential_promise_test(function() { | 86 promise_test(function() { |
87 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); | 87 testRunner.setBluetoothMockDataSet('MultiDeviceAdapter'); |
88 // Both devices support the Generic Access service, but things need to | 88 // Both devices support the Generic Access service, but things need to |
89 // support both services to pass the filter, and neither has a Battery | 89 // support both services to pass the filter, and neither has a Battery |
90 // service. | 90 // service. |
91 return assert_promise_rejects(navigator.bluetooth.requestDevice({ | 91 return assert_promise_rejects(navigator.bluetooth.requestDevice({ |
92 filters: [{services: [genericAccessServiceUuid, batteryServiceUuid]}] | 92 filters: [{services: [genericAccessServiceUuid, batteryServiceUuid]}] |
93 }), 'NotFoundError'); | 93 }), 'NotFoundError'); |
94 }, 'Too-strict filters do prevent matching.'); | 94 }, 'Too-strict filters do prevent matching.'); |
95 | 95 |
96 </script> | 96 </script> |
OLD | NEW |