mirror of
https://github.com/servo/servo.git
synced 2025-08-18 03:45:33 +01:00
Update web-platform-tests to revision 8119bc10583682676a3db9806c82ed4044e88e13
This commit is contained in:
parent
56f1e7cbc5
commit
3c256580fa
189 changed files with 4341 additions and 1030 deletions
|
@ -24,9 +24,9 @@ infrastructure.
|
|||
|
||||
[Web Bluetooth Testing API]: https://docs.google.com/document/d/1Nhv_oVDCodd1pEH_jj9k8gF4rPGb_84VYaZ9IG8M_WY/
|
||||
|
||||
# Generated gen-* files from generator.py
|
||||
# Generated gen-* files from generate.py
|
||||
|
||||
`generator.py` builds `gen-*.html` tests using templates in
|
||||
`generate.py` builds `gen-*.html` tests using templates in
|
||||
`script-tests/*/*.js`.
|
||||
|
||||
The subdirectory structure in `bluetooth/script-test/*` is recreated into
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'HeartRate device properties';
|
||||
|
||||
bluetooth_test(
|
||||
() => getHealthThermometerService()
|
||||
.then(({service}) => Promise.all([
|
||||
service.getCharacteristic('temperature_measurement'),
|
||||
service.getCharacteristic('measurement_interval')
|
||||
]))
|
||||
.then(([temperature_measurement, measurement_interval]) => {
|
||||
let tm_expected_properties =
|
||||
new TestCharacteristicProperties(['indicate']);
|
||||
assert_properties_equal(
|
||||
temperature_measurement.properties, tm_expected_properties);
|
||||
|
||||
let mi_expected_properties = new TestCharacteristicProperties(
|
||||
['read', 'write', 'indicate']);
|
||||
assert_properties_equal(
|
||||
measurement_interval.properties, mi_expected_properties);
|
||||
}),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,23 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'HeartRate device properties';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {service} = await getHealthThermometerService()
|
||||
const [temperature_measurement, measurement_interval] = await Promise.all([
|
||||
service.getCharacteristic('temperature_measurement'),
|
||||
service.getCharacteristic('measurement_interval')
|
||||
]);
|
||||
const tm_expected_properties = new TestCharacteristicProperties(['indicate']);
|
||||
assert_properties_equal(
|
||||
temperature_measurement.properties, tm_expected_properties);
|
||||
|
||||
const mi_expected_properties =
|
||||
new TestCharacteristicProperties(['read', 'write', 'indicate']);
|
||||
assert_properties_equal(
|
||||
measurement_interval.properties, mi_expected_properties);
|
||||
}, test_desc);
|
|
@ -1,22 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic is removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Characteristic no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.remove())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.startNotifications(),
|
||||
expected,
|
||||
'Characteristic got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic is removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException(
|
||||
'GATT Characteristic no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.remove();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.startNotifications(), expected,
|
||||
'Characteristic got removed.');
|
||||
}, test_desc);
|
|
@ -1,23 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Service is removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Service no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_peripheral, fake_service;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
|
||||
.then(() => fake_service.remove())
|
||||
.then(() => fake_peripheral.simulateGATTServicesChanged())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.startNotifications(),
|
||||
expected,
|
||||
'Service got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Service is removed. Reject with InvalidStateError.';
|
||||
const expected =
|
||||
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_peripheral, fake_service} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_service.remove();
|
||||
await fake_peripheral.simulateGATTServicesChanged();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.startNotifications(), expected, 'Service got removed.');
|
||||
}, test_desc);
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Add multiple event listeners then readValue().';
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0,1,2]))
|
||||
.then(() => assert_promise_resolves_after_event(
|
||||
characteristic,
|
||||
'readValue',
|
||||
'characteristicvaluechanged',
|
||||
3 /* attach 3 listeners */))
|
||||
.then(results => {
|
||||
let read_value = new Uint8Array(results[0].buffer);
|
||||
let event_values = results.slice(1).map(v => new Uint8Array(v.buffer));
|
||||
for (let event_value of event_values) {
|
||||
assert_equals(event_value.buffer, read_value.buffer);
|
||||
assert_array_equals(event_value, read_value);
|
||||
}
|
||||
}), test_desc);
|
||||
</script>
|
|
@ -0,0 +1,26 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Add multiple event listeners then readValue().';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);
|
||||
|
||||
// Make sure that |characteristic.readValue()| resolves after
|
||||
// |characteristicvaluechanged| is fired |3| times.
|
||||
const results = await assert_promise_resolves_after_event(
|
||||
characteristic /* object */, 'readValue' /* func */,
|
||||
'characteristicvaluechanged' /* event */, 3 /* num_listeners */);
|
||||
|
||||
const read_value = new Uint8Array(results[0].buffer);
|
||||
const event_values = results.slice(1).map(v => new Uint8Array(v.buffer));
|
||||
for (const event_value of event_values) {
|
||||
assert_equals(event_value.buffer, read_value.buffer);
|
||||
assert_array_equals(event_value, read_value);
|
||||
}
|
||||
}, test_desc);
|
|
@ -1,22 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Characteristic no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.remove())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.readValue(),
|
||||
expected,
|
||||
'Characteristic got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,17 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException(
|
||||
'GATT Characteristic no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.remove();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.readValue(), expected, 'Characteristic got removed.');
|
||||
}, test_desc);
|
|
@ -1,27 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Reading a characteristic should fire an event.';
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.setNextReadResponse(
|
||||
GATT_SUCCESS, [0, 1, 2]))
|
||||
.then(() => assert_promise_resolves_after_event(
|
||||
characteristic,
|
||||
'readValue',
|
||||
'characteristicvaluechanged'))
|
||||
.then(results => new Promise(resolve => {
|
||||
let read_value = new Uint8Array(results[0].buffer);
|
||||
let event_value = new Uint8Array(results[1].buffer);
|
||||
assert_equals(event_value.buffer, read_value.buffer);
|
||||
assert_array_equals(event_value, read_value);
|
||||
resolve();
|
||||
})), test_desc);
|
||||
</script>
|
|
@ -0,0 +1,24 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Reading a characteristic should fire an event.';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, [0, 1, 2]);
|
||||
|
||||
// Make sure that |characteristic.readValue()| resolves after
|
||||
// |characteristicvaluechanged| is fired.
|
||||
const results = await assert_promise_resolves_after_event(
|
||||
characteristic /* object */, 'readValue' /* func */,
|
||||
'characteristicvaluechanged' /* event */);
|
||||
|
||||
const read_value = new Uint8Array(results[0].buffer);
|
||||
const event_value = new Uint8Array(results[1].buffer);
|
||||
assert_equals(event_value.buffer, read_value.buffer);
|
||||
assert_array_equals(event_value, read_value);
|
||||
}, test_desc);
|
|
@ -1,24 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'A read request succeeds and returns the characteristic\'s ' +
|
||||
'value.';
|
||||
const EXPECTED_VALUE = [0, 1, 2];
|
||||
|
||||
let characteristic, fake_characteristic;
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.setNextReadResponse(
|
||||
GATT_SUCCESS,
|
||||
EXPECTED_VALUE))
|
||||
.then(() => characteristic.readValue())
|
||||
.then(value => assert_array_equals(
|
||||
new Uint8Array(value.buffer),
|
||||
EXPECTED_VALUE)),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,17 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'A read request succeeds and returns the characteristic\'s ' +
|
||||
'value.';
|
||||
const EXPECTED_VALUE = [0, 1, 2];
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, EXPECTED_VALUE);
|
||||
const value = await characteristic.readValue();
|
||||
assert_array_equals(new Uint8Array(value.buffer), EXPECTED_VALUE)
|
||||
}, test_desc);
|
|
@ -1,23 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Succesful read should update characteristic.value';
|
||||
const EXPECTED_VALUE = [0, 1, 2];
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => assert_equals(characteristic.value, null))
|
||||
.then(() => fake_characteristic.setNextReadResponse(
|
||||
GATT_SUCCESS, EXPECTED_VALUE))
|
||||
.then(() => characteristic.readValue())
|
||||
.then(() => assert_array_equals(
|
||||
new Uint8Array(characteristic.value.buffer),
|
||||
EXPECTED_VALUE)),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
const test_desc = 'Succesful read should update characteristic.value';
|
||||
const EXPECTED_VALUE = [0, 1, 2];
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
assert_equals(characteristic.value, null);
|
||||
|
||||
await fake_characteristic.setNextReadResponse(GATT_SUCCESS, EXPECTED_VALUE);
|
||||
await characteristic.readValue();
|
||||
assert_array_equals(
|
||||
new Uint8Array(characteristic.value.buffer), EXPECTED_VALUE)
|
||||
}, test_desc);
|
|
@ -1,23 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Service no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_peripheral, fake_service;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
|
||||
.then(() => fake_service.remove())
|
||||
.then(() => fake_peripheral.simulateGATTServicesChanged())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.readValue(),
|
||||
expected,
|
||||
'Service got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
|
||||
const expected =
|
||||
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_peripheral, fake_service} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_service.remove();
|
||||
await fake_peripheral.simulateGATTServicesChanged();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.readValue(), expected, 'Service got removed.')
|
||||
}, test_desc);
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Same parent service returned from multiple characteristics.';
|
||||
|
||||
bluetooth_test(
|
||||
() => getHealthThermometerService()
|
||||
.then(({service}) => Promise.all([
|
||||
service.getCharacteristic('measurement_interval'),
|
||||
service.getCharacteristic('temperature_measurement')
|
||||
]))
|
||||
.then(
|
||||
characteristics => assert_equals(
|
||||
characteristics[0].service, characteristics[1].service)),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,16 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Same parent service returned from multiple characteristics.';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {service} = await getHealthThermometerService();
|
||||
const characteristics = await Promise.all([
|
||||
service.getCharacteristic('measurement_interval'),
|
||||
service.getCharacteristic('temperature_measurement')
|
||||
]);
|
||||
assert_equals(characteristics[0].service, characteristics[1].service);
|
||||
}, test_desc);
|
|
@ -1,17 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = '[SameObject] test for BluetoothRemoteGATTCharacteristic ' +
|
||||
'service.';
|
||||
|
||||
bluetooth_test(
|
||||
() => getMeasurementIntervalCharacteristic().then(
|
||||
({characteristic}) =>
|
||||
assert_equals(characteristic.service, characteristic.service)),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,13 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = '[SameObject] test for BluetoothRemoteGATTCharacteristic ' +
|
||||
'service.';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic} = await getMeasurementIntervalCharacteristic();
|
||||
assert_equals(characteristic.service, characteristic.service);
|
||||
}, test_desc);
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
|
||||
function detachBuffer(buffer) {
|
||||
window.postMessage('', '*', [buffer]);
|
||||
}
|
||||
|
||||
bluetooth_test(async (t) => {
|
||||
let {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
|
||||
let typed_array = Uint8Array.of(1, 2);
|
||||
detachBuffer(typed_array.buffer);
|
||||
await promise_rejects(
|
||||
t, 'InvalidStateError', characteristic.writeValue(typed_array));
|
||||
|
||||
let array_buffer = Uint8Array.of(3, 4).buffer;
|
||||
detachBuffer(array_buffer);
|
||||
await promise_rejects(
|
||||
t, 'InvalidStateError', characteristic.writeValue(array_buffer));
|
||||
}, 'writeValue() fails when passed a detached buffer');
|
||||
</script>
|
|
@ -0,0 +1,25 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'writeValue() fails when passed a detached buffer';
|
||||
|
||||
function detachBuffer(buffer) {
|
||||
window.postMessage('', '*', [buffer]);
|
||||
}
|
||||
|
||||
bluetooth_test(async (t) => {
|
||||
const {characteristic} = await getMeasurementIntervalCharacteristic();
|
||||
|
||||
const typed_array = Uint8Array.of(1, 2);
|
||||
detachBuffer(typed_array.buffer);
|
||||
await promise_rejects(
|
||||
t, 'InvalidStateError', characteristic.writeValue(typed_array));
|
||||
|
||||
const array_buffer = Uint8Array.of(3, 4).buffer;
|
||||
detachBuffer(array_buffer);
|
||||
await promise_rejects(
|
||||
t, 'InvalidStateError', characteristic.writeValue(array_buffer));
|
||||
}, test_desc);
|
|
@ -1,22 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Characteristic no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => fake_characteristic.remove())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.writeValue(new ArrayBuffer(1 /* length */)),
|
||||
expected,
|
||||
'Characteristic got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,18 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Characteristic gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException(
|
||||
'GATT Characteristic no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_characteristic.remove();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.writeValue(new ArrayBuffer(1 /* length */)), expected,
|
||||
'Characteristic got removed.');
|
||||
}, test_desc);
|
|
@ -1,23 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
|
||||
const expected = new DOMException('GATT Service no longer exists.',
|
||||
'InvalidStateError');
|
||||
let characteristic, fake_peripheral, fake_service;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_peripheral, fake_service} = _))
|
||||
.then(() => fake_service.remove())
|
||||
.then(() => fake_peripheral.simulateGATTServicesChanged())
|
||||
.then(() => assert_promise_rejects_with_message(
|
||||
characteristic.writeValue(new ArrayBuffer(1 /* length */)),
|
||||
expected,
|
||||
'Service got removed.')),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,19 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'Service gets removed. Reject with InvalidStateError.';
|
||||
const expected =
|
||||
new DOMException('GATT Service no longer exists.', 'InvalidStateError');
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_peripheral, fake_service} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
await fake_service.remove();
|
||||
await fake_peripheral.simulateGATTServicesChanged();
|
||||
await assert_promise_rejects_with_message(
|
||||
characteristic.writeValue(new ArrayBuffer(1 /* length */)), expected,
|
||||
'Service got removed.');
|
||||
}, test_desc);
|
|
@ -1,41 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="/resources/testharness.js"></script>
|
||||
<script src="/resources/testharnessreport.js"></script>
|
||||
<script src="/resources/testdriver.js"></script>
|
||||
<script src="/resources/testdriver-vendor.js"></script>
|
||||
<script src="/bluetooth/resources/bluetooth-helpers.js"></script>
|
||||
<script>
|
||||
'use strict';
|
||||
const test_desc = 'A regular write request to a writable characteristic ' +
|
||||
'should succeed.';
|
||||
let typed_array = Uint8Array.of(1, 2);
|
||||
let array_buffer = Uint8Array.of(3, 4).buffer;
|
||||
let data_view = new DataView(new ArrayBuffer(2));
|
||||
let characteristic, fake_characteristic;
|
||||
|
||||
bluetooth_test(() => getMeasurementIntervalCharacteristic()
|
||||
.then(_ => ({characteristic, fake_characteristic} = _))
|
||||
.then(() => new Promise(resolve => {
|
||||
data_view.setUint8(0, 5);
|
||||
data_view.setUint8(1, 6);
|
||||
resolve();
|
||||
}))
|
||||
.then(() => fake_characteristic.getLastWrittenValue())
|
||||
.then(last_value => assert_true(last_value === null))
|
||||
|
||||
.then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
|
||||
.then(() => characteristic.writeValue(typed_array))
|
||||
.then(() => fake_characteristic.getLastWrittenValue())
|
||||
.then(last_value => assert_array_equals(last_value, [1, 2]))
|
||||
|
||||
.then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
|
||||
.then(() => characteristic.writeValue(array_buffer))
|
||||
.then(() => fake_characteristic.getLastWrittenValue())
|
||||
.then(last_value => assert_array_equals(last_value, [3, 4]))
|
||||
|
||||
.then(() => fake_characteristic.setNextWriteResponse(GATT_SUCCESS))
|
||||
.then(() => characteristic.writeValue(data_view))
|
||||
.then(() => fake_characteristic.getLastWrittenValue())
|
||||
.then(last_value => assert_array_equals(last_value, [5, 6])),
|
||||
test_desc);
|
||||
</script>
|
|
@ -0,0 +1,39 @@
|
|||
// META: script=/resources/testharness.js
|
||||
// META: script=/resources/testharnessreport.js
|
||||
// META: script=/resources/testdriver.js
|
||||
// META: script=/resources/testdriver-vendor.js
|
||||
// META: script=/bluetooth/resources/bluetooth-helpers.js
|
||||
'use strict';
|
||||
const test_desc = 'A regular write request to a writable characteristic ' +
|
||||
'should succeed.';
|
||||
|
||||
bluetooth_test(async () => {
|
||||
const {characteristic, fake_characteristic} =
|
||||
await getMeasurementIntervalCharacteristic();
|
||||
|
||||
let last_value = await fake_characteristic.getLastWrittenValue();
|
||||
assert_equals(last_value, null);
|
||||
|
||||
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
|
||||
|
||||
const typed_array = Uint8Array.of(1, 2);
|
||||
await characteristic.writeValue(typed_array);
|
||||
last_value = await fake_characteristic.getLastWrittenValue();
|
||||
assert_array_equals(last_value, [1, 2]);
|
||||
|
||||
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
|
||||
|
||||
const array_buffer = Uint8Array.of(3, 4).buffer;
|
||||
await characteristic.writeValue(array_buffer);
|
||||
last_value = await fake_characteristic.getLastWrittenValue();
|
||||
assert_array_equals(last_value, [3, 4]);
|
||||
|
||||
await fake_characteristic.setNextWriteResponse(GATT_SUCCESS);
|
||||
|
||||
const data_view = new DataView(new ArrayBuffer(2));
|
||||
data_view.setUint8(0, 5);
|
||||
data_view.setUint8(1, 6);
|
||||
await characteristic.writeValue(data_view);
|
||||
last_value = await fake_characteristic.getLastWrittenValue();
|
||||
assert_array_equals(last_value, [5, 6]);
|
||||
}, test_desc);
|
Loading…
Add table
Add a link
Reference in a new issue