[ARM,MIPS] Skip slow tests
[WebKit-https.git] / JSTests / stress / big-int-negate-basic.js
1 //@ runBigIntEnabled
2 // Original tests from https://github.com/tc39/test262/blob/master/test/language/expressions/unary-minus/bigint.js
3
4 function assert(a, b, message) {
5     if (a !== b)
6         throw new Error(message);
7 }
8
9 function assertNotEqual(a, b, message) {
10     if (a === b)
11         throw new Error(message);
12 }
13
14 assert(-0n, 0n, "-0n === 0n");
15 assert(-(0n), 0n, "-(0n) === 0n");
16 assertNotEqual(-1n, 1n, "-1n !== 1n");
17 assert(-(1n), -1n, "-(1n) === -1n");
18 assertNotEqual(-(1n), 1n, "-(1n) !== 1n");
19 assert(-(-1n), 1n, "-(-1n) === 1n");
20 assertNotEqual(-(-1n), -1n, "-(-1n) !== -1n");
21 assert(- - 1n, 1n, "- - 1n === 1n");
22 assertNotEqual(- - 1n, -1n, "- - 1n !== -1n");
23 assert(-(0x1fffffffffffff01n), -0x1fffffffffffff01n, "-(0x1fffffffffffff01n) === -0x1fffffffffffff01n");
24 assertNotEqual(-(0x1fffffffffffff01n), 0x1fffffffffffff01n, "-(0x1fffffffffffff01n) !== 0x1fffffffffffff01n");
25 assertNotEqual(-(0x1fffffffffffff01n), -0x1fffffffffffff00n, "-(0x1fffffffffffff01n) !== -0x1fffffffffffff00n");
26
27 // Non-primitive cases
28
29 assert(-Object(1n), -1n, "-Object(1n) === -1n");
30 assertNotEqual(-Object(1n), 1n, "-Object(1n) !== 1n");
31 assertNotEqual(-Object(1n), Object(-1n), "-Object(1n) !== Object(-1n)");
32 assert(-Object(-1n), 1n, "-Object(-1n) === 1n");
33 assertNotEqual(-Object(-1n), -1n, "-Object(-1n) !== -1n");
34 assertNotEqual(-Object(-1n), Object(1n), "-Object(-1n) !== Object(1n)");
35
36 let obj = {
37     [Symbol.toPrimitive]: function() {
38         return 1n;
39     },
40     valueOf: function() {
41         throw new Error("Should never be called");
42     },
43     toString: function() {
44         throw new Error("Should never be called");
45     }
46 };
47 assert(-obj, -1n, "@@toPrimitive not called properly");
48
49 obj = {
50     valueOf: function() {
51         return 1n;
52     },
53     toString: function() {
54         throw new Error("Should never be called");
55     }
56 }
57 assert(-obj, -1n, "valueOf not called properly");
58
59 obj = {
60     toString: function() {
61         return 1n;
62     }
63 };
64
65 assert(-obj, -1n, "-{toString: function() { return 1n; }} === -1n");
66
67 let x = 1n;
68 let y = -x;
69 let z = -y;
70 assert(x, z, "-(-x) !== z");
71