• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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