[JSC] AI should not propagate AbstractValue relying on constant folding phase
[WebKit-https.git] / JSTests / stress / dataview-construct.js
1 function assert(condition) {
2     if (!condition)
3         throw new Error("Bad assertion");
4 }
5
6 function shouldThrow(func, message) {
7     var errorThrown = false;
8     var error = null;
9     try {
10         func();
11     } catch (e) {
12         errorThrown = true;
13         error = e;
14     }
15     if (!errorThrown)
16         throw new Error('not thrown');
17     if (String(error) !== message)
18         throw new Error("bad error: " + String(error));
19 }
20
21 var buffer = new ArrayBuffer(128);
22 var dataView = null;
23
24 dataView = new DataView(buffer);
25 assert(dataView.byteOffset === 0);
26 assert(dataView.byteLength === 128);
27
28 dataView = new DataView(buffer, undefined);
29 assert(dataView.byteOffset === 0);
30 assert(dataView.byteLength === 128);
31
32 dataView = new DataView(buffer, 10);
33 assert(dataView.byteOffset === 10);
34 assert(dataView.byteLength === 118);
35
36 dataView = new DataView(buffer, 10, undefined);
37 assert(dataView.byteOffset === 10);
38 assert(dataView.byteLength === 118);
39
40 dataView = new DataView(buffer, 10, 20);
41 assert(dataView.byteOffset === 10);
42 assert(dataView.byteLength === 20);
43
44 assert(new DataView(buffer, 10).byteLength === new DataView(buffer, 10, undefined).byteLength);
45
46 shouldThrow(() => {
47     new DataView;
48 }, "TypeError: DataView constructor requires at least one argument.");
49
50 shouldThrow(() => {
51     new DataView(1);
52 }, "TypeError: Expected ArrayBuffer for the first argument.");
53
54 shouldThrow(() => {
55     new DataView(buffer, 256);
56 }, "RangeError: Length out of range of buffer");
57
58 shouldThrow(() => {
59     new DataView(buffer, -1);
60 }, "RangeError: byteOffset cannot be negative");
61
62 shouldThrow(() => {
63     new DataView(buffer, Infinity);
64 }, "RangeError: byteOffset too large");
65
66 shouldThrow(() => {
67     new DataView(buffer, 0, 256);
68 }, "RangeError: Length out of range of buffer");
69
70 shouldThrow(() => {
71     new DataView(buffer, 0, -1);
72 }, "RangeError: byteLength cannot be negative");
73
74 shouldThrow(() => {
75     new DataView(buffer, 0, Infinity);
76 }, "RangeError: byteLength too large");