diff --git a/tests/wpt/metadata/MANIFEST.json b/tests/wpt/metadata/MANIFEST.json index 60e79c85496..fc05d3330c5 100644 --- a/tests/wpt/metadata/MANIFEST.json +++ b/tests/wpt/metadata/MANIFEST.json @@ -688053,7 +688053,7 @@ "testharness" ], "webxr/xrRigidTransform_constructor.https.html": [ - "6a54fff808d93ac4423364b9c8b9d528a7e520c0", + "15a7f2b5771a78dba2036ec46933e826c9a54355", "testharness" ], "webxr/xrRigidTransform_inverse.https.html": [ diff --git a/tests/wpt/metadata/webxr/xrRigidTransform_constructor.https.html.ini b/tests/wpt/metadata/webxr/xrRigidTransform_constructor.https.html.ini deleted file mode 100644 index 637e266aaa2..00000000000 --- a/tests/wpt/metadata/webxr/xrRigidTransform_constructor.https.html.ini +++ /dev/null @@ -1,4 +0,0 @@ -[xrRigidTransform_constructor.https.html] - [XRRigidTransform constructor works] - expected: FAIL - diff --git a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html index 6a54fff808d..15a7f2b5771 100644 --- a/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html +++ b/tests/wpt/web-platform-tests/webxr/xrRigidTransform_constructor.https.html @@ -41,22 +41,22 @@ let testFunction = (point.w * point.w)); }; - let checkDOMPoint = function(point, x, y, z, w) { + let checkDOMPoint = function(point, x, y, z, w, desc) { t.step(() => { - assert_approx_equals(point.x, x, FLOAT_EPSILON); - assert_approx_equals(point.y, y, FLOAT_EPSILON); - assert_approx_equals(point.z, z, FLOAT_EPSILON); - assert_approx_equals(point.w, w, FLOAT_EPSILON); + assert_approx_equals(point.x, x, FLOAT_EPSILON, `${desc}: x value`); + assert_approx_equals(point.y, y, FLOAT_EPSILON, `${desc}: y value`); + assert_approx_equals(point.z, z, FLOAT_EPSILON, `${desc}: z value`); + assert_approx_equals(point.w, w, FLOAT_EPSILON, `${desc}: w value`); }); }; - let checkTransform = function(transformObj) { + let checkTransform = function(transformObj, desc) { t.step(() => { - assert_not_equals(transformObj, null); - assert_not_equals(transformObj.position, null); - assert_not_equals(transformObj.orientation, null); - assert_not_equals(transformObj.matrix, null); - assert_equals(transformObj.matrix.length, 16); + assert_not_equals(transformObj, null, `${desc}: exists`); + assert_not_equals(transformObj.position, null, `${desc}: position exists`); + assert_not_equals(transformObj.orientation, null, `${desc}: orientation exists`); + assert_not_equals(transformObj.matrix, null, `${desc}: matrix exists`); + assert_equals(transformObj.matrix.length, 16, `${desc}: matrix of correct length`); }); }; @@ -65,43 +65,46 @@ let testFunction = let transform = new XRRigidTransform( createDOMPoint([1.0, 2.0, 3.0]), createDOMPoint([1.1, 2.1, 3.1, 1.0])); - checkTransform(transform); - checkDOMPoint(transform.position, 1.0, 2.0, 3.0, 1.0); - assert_approx_equals(quaternionLength(transform.orientation), 1.0, FLOAT_EPSILON); + checkTransform(transform, "Arbitrary transform"); + checkDOMPoint(transform.position, 1.0, 2.0, 3.0, 1.0, "Arbitrary transform position"); + assert_approx_equals(quaternionLength(transform.orientation), 1.0, FLOAT_EPSILON, + "Arbitrary transform is normalized"); // test creating identity transform let identity = new XRRigidTransform(); - checkTransform(identity); - checkDOMPoint(identity.position, 0.0, 0.0, 0.0, 1.0); - checkDOMPoint(identity.orientation, 0.0, 0.0, 0.0, 1.0); - - // test creating transform with quaternion of length 0 - // constructor should not crash - let zeroLength = new XRRigidTransform( - createDOMPoint([1.0, 2.0, 3.0]), - createDOMPoint([0.0, 0.0, 0.0, 0.0])); - checkTransform(zeroLength); + checkTransform(identity, "Identity transform"); + checkDOMPoint(identity.position, 0.0, 0.0, 0.0, 1.0, "Identity transform position"); + checkDOMPoint(identity.orientation, 0.0, 0.0, 0.0, 1.0, "Identity transform orientation"); // create transform with only position specified transform = new XRRigidTransform(createDOMPoint([1.0, 2.0, 3.0])); - checkTransform(transform); + checkTransform(transform, "Position-only"); // create transform with only orientation specified transform = new XRRigidTransform(undefined, createDOMPoint([1.1, 2.1, 3.1, 1.0])); - checkTransform(transform); + checkTransform(transform, "orientation-only"); // create transform with DOMPointReadOnly transform = new XRRigidTransform( createDOMPointReadOnly([1.0, 2.0, 3.0]), createDOMPointReadOnly([1.1, 2.1, 3.1, 1.0])); - checkTransform(transform); + checkTransform(transform, "Created with DOMPointReadOnly"); // create transform with dictionary transform = new XRRigidTransform( coordDict([1.0, 2.0, 3.0]), coordDict([1.1, 2.1, 3.1, 1.0])); - checkTransform(transform); + checkTransform(transform, "Created with dict"); + assert_throws(new TypeError(), () => new XRRigidTransform( + coordDict([1.0, 2.0, 3.0, 0.5]), + coordDict([1.1, 2.1, 3.1, 1.0]) + ), "Constructor should throw TypeError for non-1 position w values"); + + assert_throws("InvalidStateError", () => new XRRigidTransform( + coordDict([1.0, 2.0, 3.0, 1.0]), + coordDict([0, 0, 0, 0]) + ), "Constructor should throw InvalidStateError for non-normalizeable orientation values"); resolve(); });