• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2023-2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16function test_unary_minus(): void {
17    assertEQ(new BigInt(10).negate(), (-10n))
18    assertEQ(new BigInt(1000).negate(), (-1000n))
19    assertEQ(new BigInt(-1).negate(), (1n))
20    assertEQ(new BigInt(-10).negate(), (10n))
21    assertEQ(new BigInt(-100).negate(), (100n))
22    assertEQ(new BigInt(0).negate(), (0n))
23}
24
25function test_unary(): void {
26    let n = -128n
27    assertEQ(n, -128n)
28
29    let a = 123n;
30    assertEQ(a, 123n)
31    assertEQ(a.toString(), "123")
32
33    a = -123n;
34    assertEQ(a, -123n)
35    assertEQ(a.toString(), "-123")
36
37    a = 123n
38    assertEQ(a, 123n)
39    assertEQ(a.toString(), "123")
40
41    a = -a;
42    assertEQ(a, -123n)
43    assertEQ(a.toString(), "-123")
44
45    a = -a;
46    assertEQ(a, 123n)
47    assertEQ(a.toString(), "123")
48
49    let e: bigint;
50    assertEQ(a, 123n)
51    assertEQ(a.toString(), "123")
52    e = -a;
53
54    // Check that original value does not change
55    assertEQ(a, 123n)
56    assertEQ(a.toString(), "123")
57    assertEQ(e, -123n)
58    assertEQ(e.toString(), "-123")
59    e = a;
60    assertEQ(e, 123n)
61    assertEQ(e.toString(), "123")
62
63    let b = -123n;
64    assertEQ(b, -123n)
65    assertEQ(b.toString(), "-123")
66
67    let c = -(123n);
68    assertEQ(c, -123n)
69    assertEQ(c.toString(), "-123")
70
71    // Double unary minus
72    let d = -(-123n);
73    assertEQ(d, 123n)
74    assertEQ(d.toString(), "123")
75
76    // Triple unary minux
77    let f = -(-(-123n));
78    assertEQ(f, -123n)
79    assertEQ(f.toString(), "-123")
80
81    a = new BigInt(321);
82    assertEQ(a.toString(), "321")
83    assertEQ(a, 321n)
84
85    b = -a;
86    assertEQ(a.toString(), "321")
87    assertEQ(a, 321n)
88    assertEQ(b, -321n)
89    assertEQ(b.toString(), "-321")
90}
91
92function main() : void {
93    test_unary()
94    test_unary_minus()
95}
96