<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script src="../resources/mojo-helpers.js"></script>
<script src="resources/sensor-helpers.js"></script>
<script src="resources/generic-sensor-tests.js"></script>
<script>

'use strict';

if (!window.testRunner)
    debug('This test cannot be run without the TestRunner');

const kDefaultReadingValueX = -19.2;
const kDefaultReadingValueY = 12.1;
const kDefaultReadingValueZ = -44.3;
var readsCount = 0;

function update_sensor_reading(buffer, expects_modified_reading) {
  buffer[1] = window.performance.now();
  buffer[2] = kDefaultReadingValueX;
  buffer[3] = kDefaultReadingValueY;
  buffer[4] = kDefaultReadingValueZ;
  if (expects_modified_reading)
    buffer[2] += readsCount;

  readsCount++;
}

function verify_sensor_reading(reading) {
  return reading.x == kDefaultReadingValueX &&
         reading.y == kDefaultReadingValueY &&
         reading.z == kDefaultReadingValueZ;
}

runGenericSensorTests(Magnetometer, update_sensor_reading, verify_sensor_reading);
</script>
