Imported Upstream version 1.0.0
[platform/upstream/js.git] / js / src / jit-test / tests / basic / testTypedArrayPunning.js
1 function testNonCanonicalNan()
2 {
3     const bytes = 128;
4     var buf = new ArrayBuffer(bytes);
5
6     /* create an array of non-canonical double nans */
7     var ui8arr = new Uint8Array(buf);
8     for (var i = 0; i < ui8arr.length; ++i)
9         ui8arr[i] = 0xff;
10
11     var dblarr = new Float64Array(buf);
12     assertEq(dblarr.length, bytes / 8);
13
14     /* ensure they are canonicalized */
15     for (var i = 0; i < dblarr.length; ++i) {
16         var asstr = dblarr[i] + "";
17         var asnum = dblarr[i] + 0.0;
18         assertEq(asstr, "NaN");
19         assertEq(asnum, NaN);
20     }
21
22     /* create an array of non-canonical float nans */
23     for (var i = 0; i < ui8arr.length; i += 4) {
24         ui8arr[i+0] = 0xffff;
25         ui8arr[i+1] = 0xffff;
26         ui8arr[i+2] = 0xffff;
27         ui8arr[i+3] = 0xffff;
28     }
29
30     var fltarr = new Float32Array(buf);
31     assertEq(fltarr.length, bytes / 4);
32
33     /* ensure they are canonicalized */
34     for (var i = 0; i < fltarr.length; ++i) {
35         var asstr = fltarr[i] + "";
36         var asnum = fltarr[i] + 0.0;
37         assertEq(asstr, "NaN");
38         assertEq(asnum, NaN);
39     }
40 }
41
42 testNonCanonicalNan();