Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
- This WPT test may be referenced by the following Test IDs:
- /touch-events/touch-touchevent-constructor.html - WPT Dashboard Interop Dashboard
<!DOCTYPE HTML>
<html>
<head>
<title>Touch and TouchEvent Constructor Tests</title>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="support/touch.js"></script>
</head>
<body>
<div id="target0"></div>
<script>
test(function() {
var testIdentifier = 0;
var testTarget = document.getElementById('target0');
assert_throws_js(TypeError, function() {new Touch();}, "Touch constructor with no argument");
assert_throws_js(TypeError, function() {new Touch(null);}, "Touch constructor with null argument");
assert_throws_js(TypeError, function() {new Touch(undefined);}, "Touch constructor with undefined argument");
assert_throws_js(TypeError, function() {new Touch({});}, "Touch constructor with empty object");
assert_throws_js(TypeError, function() {new Touch({
identifier: testIdentifier
});}, "Touch constructor with only identifier");
assert_throws_js(TypeError, function() {new Touch({
target: testTarget
});}, "Touch constructor with only target");
}, "Touch constructor with insufficient properties");
test(function() {
var testIdentifier = 0;
var testTarget = document.getElementById('target0');
assert_throws_js(TypeError, function() {new Touch({
identifier: testIdentifier,
target: null
});}, "Touch constructor with null target");
assert_throws_js(TypeError, function() {new Touch({
identifier: testIdentifier,
target: undefined
});}, "Touch constructor with undefined target");
assert_throws_js(TypeError, function() {new Touch({
identifier: testIdentifier,
target: location
});}, "Touch constructor with Location target");
}, "Touch constructor with non-EventTarget target");
test(function() {
var testIdentifier = 74;
var testTarget = document.getElementById('target0');
var approxEpsilon = 0.00001;
var touch1 = new Touch({
identifier: testIdentifier,
target: testTarget,
});
check_Touch_object(touch1);
assert_equals(touch1.target, testTarget, "touch.target is requested value");
assert_equals(touch1.identifier, testIdentifier, "touch.identifier is requested value");
assert_approx_equals(touch1.pageX, 0, approxEpsilon, "touch.pageX is default value");
assert_approx_equals(touch1.pageY, 0, approxEpsilon, "touch.pageY is default value");
assert_approx_equals(touch1.screenX, 0, approxEpsilon, "touch.screenX is default value");
assert_approx_equals(touch1.screenY, 0, approxEpsilon, "touch.screenY is default value");
assert_approx_equals(touch1.clientX, 0, approxEpsilon, "touch.clientX is default value.");
assert_approx_equals(touch1.clientY, 0, approxEpsilon, "touch.clientY is default value.");
}, "Touch constructor exists and creates a Touch object with minimum properties");
test(function() {
var testIdentifier = 42;
var testTarget = document.getElementById('target0');
var testPageX = 15;
var testPageY = 20.2;
var testScreenX = 35.34;
var testScreenY = 40.56;
var testClientX = 10.175;
var testClientY = 5;
var approxEpsilon = 0.00001;
var touch1 = new Touch({
identifier: testIdentifier,
target: testTarget,
pageX: testPageX,
pageY: testPageY,
screenX: testScreenX,
screenY: testScreenY,
clientX: testClientX,
clientY: testClientY,
});
check_Touch_object(touch1);
assert_equals(touch1.identifier, testIdentifier, "touch.identifier is requested value");
assert_equals(touch1.target, testTarget, "touch.target is requested value");
assert_approx_equals(touch1.pageX, testPageX, approxEpsilon, "touch.pageX is requested value");
assert_approx_equals(touch1.pageY, testPageY, approxEpsilon, "touch.pageY is requested value");
assert_approx_equals(touch1.screenX, testScreenX, approxEpsilon, "touch.screenX is requested value");
assert_approx_equals(touch1.screenY, testScreenY, approxEpsilon, "touch.screenY is requested value");
assert_approx_equals(touch1.clientX, testClientX, approxEpsilon, "touch.clientX is requested value.");
assert_approx_equals(touch1.clientY, testClientY, approxEpsilon, "touch.clientY is requested value.");
}, "Touch constructor exists and creates a Touch object with requested properties");
test(function() {
var testTarget = document.getElementById('target0');
var touch1 = new Touch({
identifier: 45,
target: testTarget,
pageX: 45,
pageY: 50,
screenX: 65,
screenY: 60,
clientX: 70,
clientY: 75,
});
var touch2 = new Touch({
identifier: 52,
target: testTarget,
pageX: 15,
pageY: 20,
screenX: 15,
screenY: 20,
clientX: 15,
clientY: 20,
});
var touchEvent1 = new TouchEvent("ontouchstart", {
touches: [touch1, touch2],
targetTouches: [touch1],
altKey: true,
metaKey: false,
});
check_TouchEvent(touchEvent1);
assert_equals(touchEvent1.type, "ontouchstart", "touchEvent.type is requested value");
assert_equals(touchEvent1.touches.length, 2, "touchEvent.touches.length is requested value");
assert_equals(touchEvent1.touches[0], touch1, "touchEvent.touches[0] is requested value");
assert_equals(touchEvent1.touches[1], touch2, "touchEvent.touches[1] is requested value");
assert_equals(touchEvent1.targetTouches.length, 1, "touchEvent.targetTouches.length is requested value");
assert_equals(touchEvent1.targetTouches[0], touch1, "touchEvent.targetTouches[0] is requested value");
assert_equals(touchEvent1.changedTouches.length, 0, "touchEvent.changedTouches.length is requested value");
assert_equals(touchEvent1.altKey, true, "touchEvent.altKey is requested value");
assert_equals(touchEvent1.metaKey, false, "touchEvent.metaKey is requested value");
assert_equals(touchEvent1.ctrlKey, false, "touchEvent.ctrlKey is requested value");
assert_equals(touchEvent1.shiftKey, false, "touchEvent.shiftKey is requested value.");
}, "TouchEvent constructor exists and creates a TouchEvent object with requested properties");
</script>
</body>
</html>