2d.imageData.object.ctor.pixelFormat.html (3647B)
1 <!DOCTYPE html> 2 <!-- DO NOT EDIT! This test has been generated by /html/canvas/tools/gentest.py. --> 3 <meta charset="UTF-8"> 4 <title>Canvas test: 2d.imageData.object.ctor.pixelFormat</title> 5 <script src="/resources/testharness.js"></script> 6 <script src="/resources/testharnessreport.js"></script> 7 <script src="/html/canvas/resources/canvas-tests.js"></script> 8 <link rel="stylesheet" href="/html/canvas/resources/canvas-tests.css"> 9 <body class="show_output"> 10 11 <h1>2d.imageData.object.ctor.pixelFormat</h1> 12 <p class="desc">Testing ImageData constructor pixelFormat behaviors</p> 13 14 15 <p class="output">Actual output:</p> 16 <canvas id="c" class="output" width="100" height="50"><p class="fallback">FAIL (fallback content)</p></canvas> 17 18 <ul id="d"></ul> 19 <script> 20 var t = async_test("Testing ImageData constructor pixelFormat behaviors"); 21 _addTest(function(canvas, ctx) { 22 23 function setRGBA(imageData, i, rgba) 24 { 25 var s = i * 4; 26 imageData[s] = rgba[0]; 27 imageData[s + 1] = rgba[1]; 28 imageData[s + 2] = rgba[2]; 29 imageData[s + 3] = rgba[3]; 30 } 31 32 function getRGBA(imageData, i) 33 { 34 var result = []; 35 var s = i * 4; 36 for (var j = 0; j < 4; j++) { 37 result[j] = imageData[s + j]; 38 } 39 return result; 40 } 41 42 function assertArrayEquals(actual, expected) 43 { 44 _assertSame(typeof actual, "object", "typeof actual", "\"object\""); 45 _assertDifferent(actual, null, "actual", "null"); 46 _assertSame("length" in actual, true, "\"length\" in actual", "true"); 47 _assertSame(actual.length, expected.length, "actual.length", "expected.length"); 48 for (var i = 0; i < actual.length; i++) { 49 _assertSame(actual.hasOwnProperty(i), expected.hasOwnProperty(i), "actual.hasOwnProperty(i)", "expected.hasOwnProperty(i)"); 50 _assertSame(actual[i], expected[i], "actual[\""+(i)+"\"]", "expected[\""+(i)+"\"]"); 51 } 52 } 53 54 _assertDifferent(ImageData, undefined, "ImageData", "undefined"); 55 imageData = new ImageData(100, 50); 56 _assertSame(imageData.pixelFormat, "rgba-unorm8", "imageData.pixelFormat", "\"rgba-unorm8\""); 57 58 imageData = new ImageData(100, 50, {pixelFormat:"rgba-float16"}); 59 _assertSame(imageData.pixelFormat, "rgba-float16", "imageData.pixelFormat", "\"rgba-float16\""); 60 var testColor = [0, -1, 0.5, 1024]; 61 setRGBA(imageData.data, 4, testColor); 62 assertArrayEquals(getRGBA(imageData.data, 4), testColor); 63 64 data = new Float16Array(200); 65 imageData = new ImageData(data, 10, 5, {pixelFormat:"rgba-float16"}); 66 _assertSame(imageData.pixelFormat, "rgba-float16", "imageData.pixelFormat", "\"rgba-float16\""); 67 _assertSame(imageData.data, data, "imageData.data", "data"); 68 assert_throws_dom("INVALID_STATE_ERR", function() { new ImageData(data, 10, 5, {pixelFormat:"rgba-unorm8"}); }); 69 assert_throws_dom("INVALID_STATE_ERR", function() { new ImageData(data, 10, 5); }); 70 71 data = new Uint8ClampedArray(200); 72 imageData = new ImageData(data, 10, 5); 73 _assertSame(imageData.pixelFormat, "rgba-unorm8", "imageData.pixelFormat", "\"rgba-unorm8\""); 74 _assertSame(imageData.data, data, "imageData.data", "data"); 75 assert_throws_dom("INVALID_STATE_ERR", function() { new ImageData(data, 10, 5, {pixelFormat:"rgba-float16"}); }); 76 77 assert_throws_js(TypeError, function() { new ImageData(data, 10, 5, {pixelFormat:"unorm8"}); }); 78 assert_throws_js(TypeError, function() { new ImageData(data, 10, 5, {pixelFormat:"float16"}); }); 79 assert_throws_js(TypeError, function() { new ImageData(data, 10, 5, {pixelFormat:"rgba8unorm"}); }); 80 assert_throws_js(TypeError, function() { new ImageData(data, 10, 5, {pixelFormat:"rgba16float"}); }); 81 82 }); 83 </script>