<!DOCTYPE html>
<meta charset="utf-8">
<title>Accelerometer Sensor IDL tests</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/accelerometer/">
<link rel="help" href="https://w3c.github.io/sensors/">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="/resources/WebIDLParser.js"></script>
<script src="/resources/idlharness.js"></script>
<script>
"use strict";

function doTest([dom, generic_sensor, accelerometer]) {
  const idl_array = new IdlArray();
  idl_array.add_untested_idls(dom);
  idl_array.add_untested_idls('interface EventHandler {};');
  idl_array.add_idls(generic_sensor, { only: ['Sensor', 'SensorOptions'] });
  idl_array.add_idls(accelerometer);
  idl_array.add_objects({
    Accelerometer: ['new Accelerometer();'],
    LinearAccelerationSensor: ['new LinearAccelerationSensor();'],
    GravitySensor: ['new GravitySensor();']
  });
  idl_array.test();
}

function fetchText(url) {
  return fetch(url).then((response) => response.text());
}

promise_test(() => {
  return Promise.all([
    "/interfaces/dom.idl",
    "/interfaces/sensors.idl",
    "/interfaces/accelerometer.idl",
  ].map(fetchText)).then(doTest);
}, "Test IDL implementation of Accelerometer Sensor");
</script>
