| <!DOCTYPE html> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src="../../resources/bluetooth/bluetooth-helpers.js"></script> |
| <script> |
| |
| let matching_services = [heart_rate.uuid]; |
| let matching_name = 'Heart Rate Device'; |
| let matching_namePrefix = 'Heart'; |
| |
| let test_specs = [{ |
| filters: [{ |
| services: matching_services, |
| }] |
| }, { |
| filters: [{ |
| services: matching_services, |
| name: matching_name, |
| }] |
| }, { |
| filters: [{ |
| services: matching_services, |
| namePrefix: matching_namePrefix |
| }] |
| }, { |
| filters: [{ |
| name: matching_name, |
| }], |
| optionalServices: matching_services |
| }, { |
| filters: [{ |
| name: matching_name, |
| namePrefix: matching_namePrefix |
| }], |
| optionalServices: matching_services |
| }, { |
| filters: [{ |
| namePrefix: matching_namePrefix |
| }], |
| optionalServices: matching_services |
| }, { |
| filters: [{ |
| services: matching_services, |
| name: matching_name, |
| namePrefix: matching_namePrefix |
| }] |
| }]; |
| |
| bluetooth_test(() => { |
| return setBluetoothFakeAdapter('GlucoseHeartRateAdapter') |
| .then(() => { |
| let test_promises = Promise.resolve(); |
| test_specs.forEach(args => { |
| test_promises = test_promises |
| .then(() => requestDeviceWithKeyDown(args)) |
| .then(device => { |
| // We always have access to the services in matching_services |
| // because we include them in a filter or in optionalServices. |
| assert_equals(device.name, matching_name); |
| assert_true(device.name.startsWith(matching_namePrefix)); |
| }); |
| }); |
| return test_promises; |
| }); |
| }, 'Matches a filter if all present members match.'); |
| </script> |