[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / big-int-bitwise-xor-type-error.js
1 //@ runBigIntEnabled
2
3 function assert(a, message) {
4     if (!a)
5         throw new Error(message);
6 }
7
8 function assertThrowTypeError(a, b, message) {
9     try {
10         let n = a ^ b;
11         assert(false, message + ": Should throw TypeError, but executed without exception");
12     } catch (e) {
13         assert(e instanceof TypeError, message + ": expected TypeError, got: " + e);
14     }
15 }
16
17 assertThrowTypeError(30n, "foo", "BigInt ^ String");
18 assertThrowTypeError("bar", 18757382984821n, "String ^ BigInt");
19 assertThrowTypeError(30n, Symbol("foo"), "BigInt ^ Symbol");
20 assertThrowTypeError(Symbol("bar"), 18757382984821n, "Symbol ^ BigInt");
21 assertThrowTypeError(30n, 3320, "BigInt ^ Int32");
22 assertThrowTypeError(33256, 18757382984821n, "Int32 ^ BigInt");
23 assertThrowTypeError(30n, 0.543, "BigInt ^ Double");
24 assertThrowTypeError(230.19293, 18757382984821n, "Double ^ BigInt");
25 assertThrowTypeError(30n, NaN, "BigInt ^ NaN");
26 assertThrowTypeError(NaN, 18757382984821n, "NaN ^ BigInt");
27 assertThrowTypeError(30n, +Infinity, "BigInt ^ +Infinity");
28 assertThrowTypeError(+Infinity, 18757382984821n, "+Infinity ^ BigInt");
29 assertThrowTypeError(30n, -Infinity, "BigInt ^ -Infinity");
30 assertThrowTypeError(-Infinity, 18757382984821n, "-Infinity ^ BigInt");
31 assertThrowTypeError(30n, null, "BigInt ^ null");
32 assertThrowTypeError(null, 18757382984821n, "null ^ BigInt");
33 assertThrowTypeError(30n, undefined, "BigInt ^ undefined");
34 assertThrowTypeError(undefined, 18757382984821n, "undefined ^ BigInt");
35 assertThrowTypeError(30n, true, "BigInt ^ true");
36 assertThrowTypeError(true, 18757382984821n, "true ^ BigInt");
37 assertThrowTypeError(30n, false, "BigInt ^ false");
38 assertThrowTypeError(false, 18757382984821n, "false ^ BigInt");
39
40 // Error when returning from object
41
42 let o = {
43     valueOf: function () { return Symbol("Foo"); }
44 };
45
46 assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Symbol");
47 assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Symbol ^ BigInt");
48
49 o = {
50     valueOf: function () { return 33256; }
51 };
52
53 assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Int32");
54 assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Int32 ^ BigInt");
55
56 o = {
57     valueOf: function () { return 0.453; }
58 };
59
60 assertThrowTypeError(30n, o, "BigInt ^ Object.valueOf returning Double");
61 assertThrowTypeError(o, 18757382984821n, "Object.valueOf returning Double ^ BigInt");
62
63 o = {
64     toString: function () { return Symbol("Foo"); }
65 };
66
67 assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Symbol");
68 assertThrowTypeError(o, 18757382984821n, "Object.toString returning Symbol ^ BigInt");
69
70 o = {
71     toString: function () { return 33256; }
72 };
73
74 assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Int32");
75 assertThrowTypeError(o, 18757382984821n, "Object.toString returning Int32 ^ BigInt");
76
77 o = {
78     toString: function () { return 0.453; }
79 };
80
81 assertThrowTypeError(30n, o, "BigInt ^ Object.toString returning Double");
82 assertThrowTypeError(o, 18757382984821n, "Object.toString returning Double ^ BigInt");
83
84 o = {
85     [Symbol.toPrimitive]: function () { return Symbol("Foo"); }
86 };
87
88 assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Symbol");
89 assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Symbol ^ BigInt");
90
91 o = {
92     [Symbol.toPrimitive]: function () { return 33256; }
93 };
94
95 assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Int32");
96 assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Int32 ^ BigInt");
97
98 o = {
99     [Symbol.toPrimitive]: function () { return 0.453; }
100 };
101
102 assertThrowTypeError(30n, o, "BigInt ^ Object.@@toPrimitive returning Double");
103 assertThrowTypeError(o, 18757382984821n, "Object.@@toPrimitive returning Double ^ BigInt");
104