blob: b3e6ae6f1cb4fa2042e9f0c9215b6f3408e9aa91 [file] [log] [blame]
eric@webkit.orgf7b36f42010-01-08 22:29:55 +00001<html>
2<head>
ap@apple.comfab549e2014-12-27 23:22:02 +00003<script src="../../../resources/js-test.js"></script>
eric@webkit.orgf7b36f42010-01-08 22:29:55 +00004<script src="resources/webgl-test.js"></script>
5</head>
6<body>
7<div id="description"></div>
8<div id="console"></div>
9
10<script>
11description("Test all permutations of WebGLArray setters to make sure values don't get truncated");
12
13debug('Regression test for <a href="https://bugs.webkit.org/show_bug.cgi?id=33350">https://bugs.webkit.org/show_bug.cgi?id=33350</a> : <code>WebGLArray subclasses do the wrong conversion in indexSetter</code>');
14
15var webGLArray = null;
16var array = null;
17
18function testSetters(typeName, low, high) {
19 var type = window[typeName];
20 webGLArray = new type(2);
21 array = [low, high];
22 debug("Testing " + typeName);
23 webGLArray.set(array);
24 shouldBe("webGLArray", "array");
25 shouldBe("webGLArray[0]", "array[0]");
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000026 shouldBe("webGLArray[1]", "array[1]");
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000027 webGLArray[0] = 0;
28 webGLArray[1] = 0;
29 shouldBe("webGLArray[0]", "0");
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000030 shouldBe("webGLArray[1]", "0");
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000031 webGLArray[0] = array[0];
32 shouldBe("webGLArray[0]", "array[0]");
kbr@google.com79af5732010-05-07 17:52:29 +000033 webGLArray[1] = array[1];
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000034 shouldBe("webGLArray[1]", "array[1]");
eric@webkit.orga32de912010-03-31 10:26:36 +000035
36 // Verify set() behaves correctly with shared underlying buffer.
37 array = [0, 1, 2, 3, 4, 5];
38 webGLArray = new type(6);
39 webGLArray.set(array);
kbr@google.com5a0aca32011-02-02 21:37:00 +000040 array = webGLArray.subarray(2, 4);
eric@webkit.orga32de912010-03-31 10:26:36 +000041 array[0] = 88;
42 array[1] = 99;
43 shouldBe("webGLArray[2]", "88");
44 shouldBe("webGLArray[3]", "99");
45 // pre-overlap
46 webGLArray.set(array, 1);
47 shouldBe("webGLArray[1]", "88");
48 shouldBe("webGLArray[2]", "99");
49 shouldBe("array[0]", "99");
50 shouldBe("array[1]", "99");
51 array[1] = 77;
52 // post-overlap
53 webGLArray.set(array, 3);
54 shouldBe("webGLArray[3]", "99");
55 shouldBe("webGLArray[4]", "77");
56 shouldBe("array[0]", "99");
57 shouldBe("array[1]", "99");
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000058}
59
kbr@google.comba8f4e32010-08-12 00:12:26 +000060testSetters("Int8Array", -128, 127);
61testSetters("Uint8Array", 0, 255);
62testSetters("Int16Array", -32768, 32767);
63testSetters("Uint16Array", 0, 65535);
64testSetters("Int32Array", -2147483648, 2147483647);
65testSetters("Uint32Array", 0, 4294967295);
66testSetters("Float32Array", -2.5, 3.5);
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000067</script>
eric@webkit.orgf7b36f42010-01-08 22:29:55 +000068</body>
69</html>