<!DOCTYPE html>
<meta charset="utf-8">
<title>Magnetometer Sensor IDL tests</title>
<link rel="author" title="Intel" href="http://www.intel.com">
<link rel="help" href="https://w3c.github.io/magnetometer/">
<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, magnetometer]) {
  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(magnetometer);
  idl_array.add_objects({
    Magnetometer: ['new Magnetometer();'],
    UncalibratedMagnetometer: ['new UncalibratedMagnetometer();']
  });
  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/magnetometer.idl",
  ].map(fetchText)).then(doTest);
}, "Test IDL implementation of Magnetometer Sensor");
</script>
