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 main(): void { 173af6ab5fSopenharmony_ci let a : double = 2147483649.0; // 2^31 + 1 183af6ab5fSopenharmony_ci assert a as float == 2147483648; // rounded 193af6ab5fSopenharmony_ci assert a as long == 2147483649; 203af6ab5fSopenharmony_ci assert a as int == 2147483647; // 2^31 - 1 == MAX_INT == 0xFFFFFFFF 213af6ab5fSopenharmony_ci assert a as short == -1; // 0xFFFF 223af6ab5fSopenharmony_ci assert a as char == c'\uFFFF'; 233af6ab5fSopenharmony_ci assert a as byte == -1; // 0xFF 243af6ab5fSopenharmony_ci 253af6ab5fSopenharmony_ci a = -2147483649.0 // 2^31 + 1 263af6ab5fSopenharmony_ci assert a as float == -2147483648; // rounded 273af6ab5fSopenharmony_ci assert a as long == -2147483649; 283af6ab5fSopenharmony_ci assert a as int == -2147483648; // -2^31 == MIN_INT == 0x10000000 293af6ab5fSopenharmony_ci assert a as short == 0; 303af6ab5fSopenharmony_ci assert a as char == c'\u0000'; 313af6ab5fSopenharmony_ci assert a as byte == 0; 323af6ab5fSopenharmony_ci 333af6ab5fSopenharmony_ci let b : float = 70000.9921875; 343af6ab5fSopenharmony_ci assert b as double == 70000.9921875; 353af6ab5fSopenharmony_ci assert b as long == 70000; // rounded, 70000 == 0x11170 363af6ab5fSopenharmony_ci assert b as int == 70000; 373af6ab5fSopenharmony_ci assert b as short == 4464; // 4464 == 0x1170 383af6ab5fSopenharmony_ci assert b as char == c'\u1170'; 393af6ab5fSopenharmony_ci assert b as byte == 112; // 112 == 0x70 403af6ab5fSopenharmony_ci 413af6ab5fSopenharmony_ci let c : long = 1193046; // 1193046 == 0x123456 423af6ab5fSopenharmony_ci assert c as int == 1193046; 433af6ab5fSopenharmony_ci assert c as short == 13398; // 13398 == 0x3456 443af6ab5fSopenharmony_ci assert c as char == c'\u3456'; 453af6ab5fSopenharmony_ci assert c as byte == 86; // 86 == 0x56 463af6ab5fSopenharmony_ci 473af6ab5fSopenharmony_ci let d : int = 126977; // 65537 == 0x1F001 483af6ab5fSopenharmony_ci assert d as short == -4095; // -4095 == 0xF001 493af6ab5fSopenharmony_ci assert d as char == c'\uF001'; 503af6ab5fSopenharmony_ci assert d as byte == 1; // 1 == 0x01 513af6ab5fSopenharmony_ci 523af6ab5fSopenharmony_ci let e : short = -30875; // -30875 == 0x8765 533af6ab5fSopenharmony_ci assert e as double == -30875.0; 543af6ab5fSopenharmony_ci assert e as float == -30875.0; 553af6ab5fSopenharmony_ci assert e as long == -30875; // -30875 == 0xFFFFFFFFFFFF8765 563af6ab5fSopenharmony_ci assert e as int == -30875; // -30875 == 0xFFFF8765 573af6ab5fSopenharmony_ci assert e as char == c'\u8765'; 583af6ab5fSopenharmony_ci assert e as byte == 101; // 101 == 0x65 593af6ab5fSopenharmony_ci 603af6ab5fSopenharmony_ci let f : char = c'\uF001'; 613af6ab5fSopenharmony_ci assert f as double == 61441.0; 623af6ab5fSopenharmony_ci assert f as float == 61441.0; 633af6ab5fSopenharmony_ci assert f as long == 61441; // 61441 == 0x000000000000F001 643af6ab5fSopenharmony_ci assert f as int == 61441; // 61441 == 0x0000F001 653af6ab5fSopenharmony_ci assert f as short == 0xf001 as short; // -4095 == 0xF001 663af6ab5fSopenharmony_ci assert f as short == -4095; 673af6ab5fSopenharmony_ci 683af6ab5fSopenharmony_ci let g : byte = -128; 693af6ab5fSopenharmony_ci assert g as double == -128.0; 703af6ab5fSopenharmony_ci assert g as float == -128.0; 713af6ab5fSopenharmony_ci assert g as long == -128; 723af6ab5fSopenharmony_ci assert g as int == -128; 733af6ab5fSopenharmony_ci assert g as short == -128; 743af6ab5fSopenharmony_ci assert g as char == c'\uFF80'; 753af6ab5fSopenharmony_ci assert (-128) as byte == -128 763af6ab5fSopenharmony_ci assert (-129) as byte == 127 773af6ab5fSopenharmony_ci 783af6ab5fSopenharmony_ci let i : boolean = true; 793af6ab5fSopenharmony_ci assert i as boolean == true; 803af6ab5fSopenharmony_ci 813af6ab5fSopenharmony_ci i = false; 823af6ab5fSopenharmony_ci assert i as boolean == false; 833af6ab5fSopenharmony_ci 843af6ab5fSopenharmony_ci assert 4294967296.0 as byte == -1; 853af6ab5fSopenharmony_ci assert 4294967296.0 as char == c'\uFFFF'; 863af6ab5fSopenharmony_ci assert 4294967296.0 as short == -1; 873af6ab5fSopenharmony_ci assert 4294967296.0 as int == Int.MAX_VALUE; 883af6ab5fSopenharmony_ci assert 4294967296.0 as long == 4294967296; 893af6ab5fSopenharmony_ci assert -4294967296.0 as byte == 0; 903af6ab5fSopenharmony_ci assert -4294967296.0 as char == c'\u0000'; 913af6ab5fSopenharmony_ci assert -4294967296.0 as short == 0; 923af6ab5fSopenharmony_ci assert -4294967296.0 as int == Int.MIN_VALUE; 933af6ab5fSopenharmony_ci assert -4294967296.0 as long == -4294967296; 943af6ab5fSopenharmony_ci 953af6ab5fSopenharmony_ci return; 963af6ab5fSopenharmony_ci} 97