1/* 2 * Copyright (c) 2024-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 16 17function main(): void { 18 19let nan_byte = Infinity * 0 as byte 20let nan_short = Infinity * 0 as short 21let nan_long = Infinity * 0 as long 22let nan_char = Infinity * 0 as char 23let nan_int = Infinity * 0 as int 24let nan_float = Infinity * 0 as float 25let nan_double = Infinity * 0 as double 26let nan_byte2 = Infinity * 0 as byte 27 28assertEQ(nan_byte, 0) 29assertEQ(nan_int, 0) 30assertEQ(nan_short, 0) 31assertEQ(nan_long, 0) 32assertEQ(nan_char, 0) 33assertTrue(isNaN(nan_float)) 34assertTrue(isNaN(nan_double)) 35assertEQ(nan_byte2, 0) 36 37let b1 = Infinity as byte // converted at compile time, as 'Infinity' is constant 38let b2: double = Infinity 39let b3 = b2 as byte // converted in runtime, as b2 isn't constant 40 41assertEQ(b1, -1) 42assertEQ(b3, -1) 43 44let l1 = Infinity as long 45let l2: double = Infinity 46let l3 = l2 as long 47let l4 = -Infinity as long 48 49assertEQ(l1, 9223372036854775807) 50assertEQ(l3, 9223372036854775807) 51assertEQ(l4, -9223372036854775808) 52 53let i1 = Infinity as int 54let i2: double = Infinity 55let i3 = i2 as int 56let i4 = -Infinity as int 57 58assertEQ(i1, 2147483647) 59assertEQ(i3, 2147483647) 60assertEQ(i4, -2147483648) 61 62let s1 = Infinity as short 63let s2: double = Infinity 64let s3 = s2 as short 65let s4 = -Infinity as short 66 67assertEQ(s1, -1) 68assertEQ(s3, -1) 69assertEQ(s4, 0) 70 71let c1 = Infinity as char 72let c2: double = Infinity 73let c3 = c2 as char 74let c4 = -Infinity as char 75 76assertEQ(c1, 65535) 77assertEQ(c3, 65535) 78assertEQ(c4, 0) 79 80let f1 = Infinity as float 81let f2: double = Infinity 82let f3 = f2 as float 83let f4 = -Infinity as float 84 85assertEQ(f1, Infinity) 86assertEQ(f3, Infinity) 87assertEQ(f4, -Infinity) 88 89let d1 = Infinity as double 90let d2: double = Infinity 91let d3 = d2 as double 92let d4 = -Infinity as double 93 94assertEQ(d1, Infinity) 95assertEQ(d3, Infinity) 96assertEQ(d4, -Infinity) 97} 98