13af6ab5fSopenharmony_ci/* 23af6ab5fSopenharmony_ci * Copyright (c) 2023-2024 Huawei Device Co., Ltd. 33af6ab5fSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 43af6ab5fSopenharmony_ci * you may not use this file except in compliance with the License. 53af6ab5fSopenharmony_ci * You may obtain a copy of the License at 63af6ab5fSopenharmony_ci * 73af6ab5fSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 83af6ab5fSopenharmony_ci * 93af6ab5fSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 103af6ab5fSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 113af6ab5fSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 123af6ab5fSopenharmony_ci * See the License for the specific language governing permissions and 133af6ab5fSopenharmony_ci * limitations under the License. 143af6ab5fSopenharmony_ci */ 153af6ab5fSopenharmony_ci 163af6ab5fSopenharmony_cifunction test_multiply(): void { 173af6ab5fSopenharmony_ci assert new BigInt(10).operatorMultiply(new BigInt(10)) == 100n; 183af6ab5fSopenharmony_ci assert new BigInt(0).operatorMultiply(new BigInt(50)) == 0n; 193af6ab5fSopenharmony_ci assert new BigInt(1).operatorMultiply(new BigInt(50)) == 50n; 203af6ab5fSopenharmony_ci assert new BigInt(50).operatorMultiply(new BigInt(5)) == 250n; 213af6ab5fSopenharmony_ci assert new BigInt(50).operatorMultiply(new BigInt(-5)) == -250n; 223af6ab5fSopenharmony_ci assert new BigInt(-1).operatorMultiply(new BigInt(-5)) == 5n; 233af6ab5fSopenharmony_ci assert new BigInt(0).operatorMultiply(new BigInt(0)) == 0n; 243af6ab5fSopenharmony_ci assert new BigInt(123).operatorMultiply(new BigInt(1)) == 123n; 253af6ab5fSopenharmony_ci assert new BigInt(1234).operatorMultiply(new BigInt(987)) == 1217958n; 263af6ab5fSopenharmony_ci assert new BigInt(3241847031247230147213740214703214721047312n).operatorMultiply(new BigInt(412343124123421347812304712431421204731024n)) == 1336753332794721625246945391107220242430725631478413717131017736872102322242538207488n; 273af6ab5fSopenharmony_ci assert new BigInt(-3241847031247230147213740214703214721047312n).operatorMultiply(new BigInt(-412343124123421347812304712431421204731024n)) == 1336753332794721625246945391107220242430725631478413717131017736872102322242538207488n; 283af6ab5fSopenharmony_ci assert new BigInt(-3241847031247230147213740214703214721047312n).operatorMultiply(new BigInt(412343124123421347812304712431421204731024n)) == -1336753332794721625246945391107220242430725631478413717131017736872102322242538207488n; 293af6ab5fSopenharmony_ci assert new BigInt(3241847031247230147213740214703214721047312n).operatorMultiply(new BigInt(-412343124123421347812304712431421204731024n)) == -1336753332794721625246945391107220242430725631478413717131017736872102322242538207488n; 303af6ab5fSopenharmony_ci assert new BigInt(256).operatorMultiply(new BigInt(256)) == 65536n; 313af6ab5fSopenharmony_ci} 323af6ab5fSopenharmony_ci 333af6ab5fSopenharmony_cifunction test_multiplication(): void { 343af6ab5fSopenharmony_ci const a = 23443495146314363289895841n 353af6ab5fSopenharmony_ci const b = 245000234343499329134n 363af6ab5fSopenharmony_ci const c = -245000234343499329134n 373af6ab5fSopenharmony_ci 383af6ab5fSopenharmony_ci /* Multiplication testing (*) */ 393af6ab5fSopenharmony_ci assert 978667632325344545n * 4534000101n == 4437279143808543031889799045n 403af6ab5fSopenharmony_ci assert a * b == 5743661804677708098900659843374372544236731694n 413af6ab5fSopenharmony_ci assert a * c == -5743661804677708098900659843374372544236731694n 423af6ab5fSopenharmony_ci assert a * 0n == 0n 433af6ab5fSopenharmony_ci assert c * 0n == 0n 443af6ab5fSopenharmony_ci 453af6ab5fSopenharmony_ci /* Division testing (/) */ 463af6ab5fSopenharmony_ci assert 39735235034886462n / 89221422n == 445355321n 473af6ab5fSopenharmony_ci assert a / b == 95687n 483af6ab5fSopenharmony_ci assert a / c == -95687n 493af6ab5fSopenharmony_ci assert 0n / a == 0n 503af6ab5fSopenharmony_ci 513af6ab5fSopenharmony_ci let err = false; 523af6ab5fSopenharmony_ci try { 533af6ab5fSopenharmony_ci a / 0n 543af6ab5fSopenharmony_ci } catch (e) { 553af6ab5fSopenharmony_ci if (e instanceof Error) { 563af6ab5fSopenharmony_ci err = true 573af6ab5fSopenharmony_ci } 583af6ab5fSopenharmony_ci } 593af6ab5fSopenharmony_ci assert err 603af6ab5fSopenharmony_ci 613af6ab5fSopenharmony_ci /* Remainder of the division (%) */ 623af6ab5fSopenharmony_ci assert 493433405047004109n % 111114444n == 18100749n 633af6ab5fSopenharmony_ci assert a % b == a % c 643af6ab5fSopenharmony_ci assert 0n % a == 0n 653af6ab5fSopenharmony_ci 663af6ab5fSopenharmony_ci err = false; 673af6ab5fSopenharmony_ci try { 683af6ab5fSopenharmony_ci a % 0n 693af6ab5fSopenharmony_ci } catch (e) { 703af6ab5fSopenharmony_ci if (e instanceof Error) { 713af6ab5fSopenharmony_ci err = true 723af6ab5fSopenharmony_ci } 733af6ab5fSopenharmony_ci } 743af6ab5fSopenharmony_ci assert err 753af6ab5fSopenharmony_ci} 763af6ab5fSopenharmony_ci 773af6ab5fSopenharmony_cifunction main() { 783af6ab5fSopenharmony_ci test_multiply() 793af6ab5fSopenharmony_ci test_multiplication() 803af6ab5fSopenharmony_ci} 813af6ab5fSopenharmony_ci 82