<!DOCTYPE html>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="resources/webxr_util.js"></script>
<script src="resources/webxr_test_constants.js"></script>
<script>

let testName = "XRRigidTransform position and orientation meet [SameObject] requirements";

// xrRigidTransform_inverse.https.html already checks [SameObject] requirement
// for XRRigidTransform.inverse. It's in a separate test because there are
// additional constraints around how the inverse attribute should work besides
// just [SameObject].

let testFunction =
  (session, fakeDeviceController, t) => new Promise((resolve, reject) => {

  let transform = new XRRigidTransform(
      { x: -9.0, y: 8.0, z: -7.0 },
      { x: 6.0, y: -5.0, z: 4.0, w: 3.0 });

  let position = transform.position;
  let orientation = transform.orientation;
  let matrix = transform.matrix;
  t.step(() => {
    assert_equals(position, transform.position,
      "XRRigidTransform.position returns the same object.");
    assert_equals(orientation, transform.orientation,
      "XRRigidTransform.orientation returns the same object.");
    assert_equals(matrix, transform.matrix,
      "XRRigidTransform.matrix returns the same object.");
  });

  resolve();
});

xr_session_promise_test(testName, testFunction, TRACKED_IMMERSIVE_DEVICE,
    'immersive-vr');

</script>
