1/*
2 * Copyright (c) 2023-2024 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_minus(): void {
17    assert new BigInt(10).operatorSubtract(new BigInt(2)) == (8n);
18    assert new BigInt(2).operatorSubtract(new BigInt(10)) == (-8n);
19    assert new BigInt(-10).operatorSubtract(new BigInt(-2)) == (-8n);
20    assert new BigInt(-100).operatorSubtract(new BigInt(1)) == (-101n);
21    assert new BigInt(-100).operatorSubtract(new BigInt(-1)) == (-99n);
22    assert new BigInt(-1000).operatorSubtract(new BigInt(10)) == (-1010n);
23    assert new BigInt(1237840127434312471243n).operatorSubtract(new BigInt(234112342314526914672342143621463921469n)) == (-234112342314526913434502016187151450226n);
24    assert new BigInt(-1237840127434312471243n).operatorSubtract(new BigInt(234112342314526914672342143621463921469n)) == (-234112342314526915910182271055776392712n);
25    assert new BigInt(1237840127434312471243n).operatorSubtract(new BigInt(-234112342314526914672342143621463921469n)) == (234112342314526915910182271055776392712n);
26    assert new BigInt(-1237840127434312471243n).operatorSubtract(new BigInt(-234112342314526914672342143621463921469n)) == (234112342314526913434502016187151450226n);
27    assert new BigInt(-1000).operatorSubtract(new BigInt(-10)) == (-990n);
28    assert new BigInt(-100).operatorSubtract(new BigInt(0)) == (-100n);
29    assert new BigInt(0).operatorSubtract(new BigInt(-100)) == (100n);
30    assert new BigInt(0).operatorSubtract(new BigInt(100)) == (-100n);
31    assert new BigInt(65500).operatorSubtract(new BigInt(1)) == (65499n);
32    assert new BigInt(65500).operatorSubtract(new BigInt(-1)) == (65501n);
33    assert new BigInt(-65500).operatorSubtract(new BigInt(-1)) == (-65499n);
34    assert new BigInt(-65500).operatorSubtract(new BigInt(1)) == (-65501n);
35    assert new BigInt(65500).operatorSubtract(new BigInt(100000)) == (-34500n);
36    assert new BigInt(49798775).operatorSubtract(new BigInt(43621978)) == (6176797n);
37    assert new BigInt(10).operatorSubtract(new BigInt(20)) == (-10n);
38}
39
40function test_subtraction(): void {
41    const a = 18446744073709551616n;
42    const b = 36893488147419103232n;
43    const c = -10000000000000000000n;
44
45    /* Subtraction testing (-) */
46    assert 999999999999999n - 1n == 999999999999998n
47    assert b - a == a
48    assert a - b == -18446744073709551616n
49    assert b - a - a == 0n
50}
51
52function test_inc_dec(): void {
53    const a = 340282366920938463463374607431768211456n
54    const b = -2313455919991034304490n
55
56    /* Increment testing */
57    /* Decrement testing */
58}
59
60
61function main() {
62    test_minus();
63    test_subtraction()
64    test_inc_dec()
65}
66