<!DOCTYPE html>
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../resources/bluetooth/bluetooth-helpers.js"></script>
<script>
'use strict';
bluetooth_test(() => {
  return setBluetoothFakeAdapter('FailingGATTOperationsAdapter')
    .then(() => requestDeviceWithKeyDown({
      filters: [{services: [errorUUID(0xA0)]}]}))
    .then(device => device.gatt.connect())
    .then(gattServer => gattServer.getPrimaryService(errorUUID(0xA0)))
    .then(service => {
      let tests = Promise.resolve();
      gatt_errors_tests.forEach(testSpec => {
        tests = tests.then(() => service.getCharacteristic(testSpec.uuid))
          .then(characteristic => assert_promise_rejects_with_message(
            characteristic.startNotifications(),
            testSpec.error,
            testSpec.testName));
      });
      return tests;
    });
}, 'Start notifications fails. Should reject with appropriate error.');
</script>
