Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Warnings

<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script>
'use strict';
function ObjectThrowingException() {};
ObjectThrowingException.prototype.valueOf = () => { throw new Error('valueOf threw exception'); }
ObjectThrowingException.prototype.__defineGetter__("x", () => { throw new Error('x getter exception'); });
ObjectThrowingException.prototype.__defineGetter__("alpha", () => { throw new Error('alpha getter exception'); });
const objectThrowingException = new ObjectThrowingException();
test(test => {
event = document.createEvent('DeviceMotionEvent');
assert_equals(event.type, "");
assert_equals(event.acceleration, null);
assert_equals(event.accelerationIncludingGravity, null);
assert_equals(event.rotationRate, null);
assert_equals(event.interval, 0);
}, 'Tests creating a DeviceMotionEvent.');
test(test => {
event = new DeviceMotionEvent('foo', {acceleration: {x: 0, y: 1, z: 2},
accelerationIncludingGravity: {x: 3, y: 4, z: 5},
rotationRate: {alpha: 6, beta: 7, gamma: 8},
interval: 9});
assert_equals(event.type, "foo");
assert_equals(event.acceleration.x, 0);
assert_equals(event.acceleration.y, 1);
assert_equals(event.acceleration.z, 2);
assert_equals(event.accelerationIncludingGravity.x, 3);
assert_equals(event.accelerationIncludingGravity.y, 4);
assert_equals(event.accelerationIncludingGravity.z, 5);
assert_equals(event.rotationRate.alpha, 6);
assert_equals(event.rotationRate.beta, 7);
assert_equals(event.rotationRate.gamma, 8);
assert_equals(event.interval, 9);
}, 'Tests no missing value.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: objectThrowingException,
accelerationIncludingGravity: {x: 3, z: 5},
rotationRate: {gamma: 8, beta: 7},
interval: 9});
assert_unreached("Invalid acceleration, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "x getter exception");
}
}, 'Tests invalid acceleration.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: {x: 0, y: 1, z: 2},
accelerationIncludingGravity: objectThrowingException,
rotationRate: {gamma: 8, beta: 7},
interval: 9});
assert_unreached("Invalid acelerationIncludingGravity, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "x getter exception");
}
}, 'Tests invalid acelerationIncludingGravity.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: {x: 0, y: 1, z: 2},
accelerationIncludingGravity: {x: 3, z: 5},
rotationRate: objectThrowingException,
interval: 9});
assert_unreached("Invalid rotationRate, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "alpha getter exception");
}
}, 'Tests invalid rotationRate.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: {x: objectThrowingException, y: 1, z: 2},
accelerationIncludingGravity: {x: 3, y: 4, z: 5},
rotationRate: {alpha: 6, beta: 7, gamma: 8},
interval: 9});
assert_unreached("Invalid acceleration.x, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "valueOf threw exception");
}
}, 'Tests invalid acceleration.x.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: {x: 0, y: 1, z: 2},
accelerationIncludingGravity: {x: 3, y: objectThrowingException, z: 5},
rotationRate: {alpha: 6, beta: 7, gamma: 8},
interval: 9});
assert_unreached("Invalid accelerationIncludingGravity.y, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "valueOf threw exception");
}
}, 'Tests invalid accelerationIncludingGravity.y.');
test(test => {
try {
event = new DeviceMotionEvent('', {acceleration: {x: 0, y: 1, z: 2},
accelerationIncludingGravity: {x: 3, y: 4, z: 5},
rotationRate: {alpha: 6, beta: 7, gamma: objectThrowingException},
interval: 9});
assert_unreached("Invalid rotationRate.gamma, must throw an Error exception");
} catch (e) {
assert_equals(e.name, "Error");
assert_equals(e.message, "valueOf threw exception");
}
}, 'Tests invalid rotationRate.gamma.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: {y: 1, x: 0},
accelerationIncludingGravity: {x: 3, z: 5},
rotationRate: {gamma: 8, beta: 7},
interval: 9});
assert_equals(event.acceleration.x, 0);
assert_equals(event.acceleration.y, 1);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity.x, 3);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, 5);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, 7);
assert_equals(event.rotationRate.gamma, 8);
assert_equals(event.interval, 9);
}, 'Tests missing fields should be null.');
test(test => {
event = new DeviceMotionEvent('');
assert_equals(event.acceleration, null);
assert_equals(event.accelerationIncludingGravity, null);
assert_equals(event.rotationRate, null);
assert_equals(event.interval, 0);
}, 'Tests DeviceMotionEvent default constructor.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: [],
accelerationIncludingGravity: [],
rotationRate: [],
interval: []});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, null);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, null);
assert_equals(event.interval, 0);
}, 'Tests all values are empty array.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: [],
accelerationIncludingGravity: undefined,
rotationRate: undefined,
interval: undefined});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity, null);
assert_equals(event.rotationRate, null);
assert_equals(event.interval, 0);
}, 'Tests some values are empty array and some values are undefined.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: null,
accelerationIncludingGravity: null,
rotationRate: null,
interval: null});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, null);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, null);
assert_equals(event.interval, 0);
}, "Tests all values are null.");
test(test => {
event = new DeviceMotionEvent('', {acceleration: {x: null, y: null, z: null},
accelerationIncludingGravity: {x: null, y: null, z: null},
rotationRate: {alpha: null, beta: null, gamma: null},
interval: null});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, null);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, null);
assert_equals(event.interval, 0);
}, 'Tests all fields are null.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: {x: null, y: null, z: 1},
accelerationIncludingGravity: {x: null, y: null, z: 2},
rotationRate: {alpha: null, beta: null, gamma: 3},
interval: null});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, 1);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, 2);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, 3);
assert_equals(event.interval, 0);
}, 'Tests some fields are null.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: {x: undefined, y: undefined, z: undefined},
accelerationIncludingGravity: {x: undefined, y: undefined, z: undefined},
rotationRate: {alpha: undefined, beta: undefined, gamma: undefined},
interval: undefined});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, null);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, null);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, null);
assert_equals(event.interval, 0);
}, 'Tests all fields are undefined.');
test(test => {
event = new DeviceMotionEvent('', {acceleration: {x: undefined, y: undefined, z: 1},
accelerationIncludingGravity: {x: undefined, y: undefined, z: 2},
rotationRate: {alpha: undefined, beta: undefined, gamma: 3},
interval: undefined});
assert_equals(event.acceleration.x, null);
assert_equals(event.acceleration.y, null);
assert_equals(event.acceleration.z, 1);
assert_equals(event.accelerationIncludingGravity.x, null);
assert_equals(event.accelerationIncludingGravity.y, null);
assert_equals(event.accelerationIncludingGravity.z, 2);
assert_equals(event.rotationRate.alpha, null);
assert_equals(event.rotationRate.beta, null);
assert_equals(event.rotationRate.gamma, 3);
assert_equals(event.interval, 0);
}, 'Tests some fields are undefined.');
</script>