| <!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="touch-support.js"></script> |
| </head> |
| <body> |
| <div id="target0"></div> |
| <script> |
| test(function() { |
| var testIdentifier = 0; |
| var testTarget = document.getElementById('target0'); |
| |
| assert_throws(new TypeError(), function() {new Touch();}, "Touch constructor with no argument"); |
| assert_throws(new TypeError(), function() {new Touch(null);}, "Touch constructor with null argument"); |
| assert_throws(new TypeError(), function() {new Touch(undefined);}, "Touch constructor with undefined argument"); |
| assert_throws(new TypeError(), function() {new Touch({});}, "Touch constructor with empty object"); |
| assert_throws(new TypeError(), function() {new Touch({ |
| identifier: testIdentifier |
| });}, "Touch constructor with only identifier"); |
| assert_throws(new 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(new TypeError(), function() {new Touch({ |
| identifier: testIdentifier, |
| target: null |
| });}, "Touch constructor with null target"); |
| assert_throws(new TypeError(), function() {new Touch({ |
| identifier: testIdentifier, |
| target: undefined |
| });}, "Touch constructor with undefined target"); |
| assert_throws(new 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> |