xrWebGLBinding_createCylinderLayer.https.html (2692B)
1 <!doctype html> 2 <title>XRWebGLBinding::createCylinderLayer</title> 3 <link rel="help" href="https://immersive-web.github.io/layers/#dom-xrwebglbinding-createquadlayer"> 4 <script src="/resources/testharness.js"></script> 5 <script src="/resources/testharnessreport.js"></script> 6 <script src="../resources/webxr_util.js"></script> 7 <script src="../resources/webxr_test_constants.js"></script> 8 <script src="./xr_layer_promise_test.js"></script> 9 10 <canvas id="webgl-canvas"></canvas> 11 12 <script> 13 14 function testCreateCylinderLayer(xrSession, deviceController, t, { gl, xrBinding, xrSpace }) { 15 return new Promise((resolve, reject) => { 16 const valid_init = { 17 space: xrSpace, 18 viewPixelWidth: 1024, 19 viewPixelHeight: 1024 20 }; 21 22 t.step(() => { 23 // Cylinder radius must be greater than or equal to 0. 24 let invalid_radius = Object.assign({}, valid_init, { radius: -5 }); 25 assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_radius), "radius is negative"); 26 }); 27 28 t.step(() => { 29 // Cylinder aspectRatio must be greater than 0. 30 let invalid_aspect_ratio = Object.assign({}, valid_init, { aspectRatio: 0 }); 31 assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_aspect_ratio), "aspectRatio is 0"); 32 }); 33 34 t.step(() => { 35 // Cylinder central angle must be greater than or equal to 0. 36 let invalid_central_angle = Object.assign({}, valid_init, { centralAngle: -6 }); 37 assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_central_angle), "centralAngle is negative"); 38 }); 39 40 t.step(() => { 41 // Cylinder central angle should not be greater than 2pi. 42 let invalid_central_angle = Object.assign({}, valid_init, { centralAngle: 7.0 }); 43 assert_throws_js(TypeError, () => xrBinding.createCylinderLayer(invalid_central_angle), "centralAngle is greater than 2pi"); 44 }); 45 46 // Test that a valid init works. 47 t.step(() => { 48 const layer = xrBinding.createCylinderLayer(valid_init); 49 assert_true(layer instanceof XRCylinderLayer, "Valid init parameters must create an XRCylinderLayer"); 50 resolve(); 51 }); 52 }); 53 } 54 55 xr_layer_promise_test("Ensure XrWebGLBinding::createCylinderLayer throws the appropriate errors", 56 testCreateCylinderLayer, TRACKED_IMMERSIVE_DEVICE, 'immersive-vr', { requiredFeatures: ['layers'] }); 57 </script>