1/* 2 * Copyright (c) 2023-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 16function main(): int 17{ 18 let a_int : int = 10; 19 let a_long : long = 1234; 20 21 a_int += a_long; 22 assertEQ(a_int, 1244) 23 24 a_int = 10 as int; 25 a_long = 1234 as long; 26 a_int -= a_long; 27 assertEQ(a_int, -1224) 28 29 a_int = 10 as int; 30 a_long = 1234 as long; 31 a_int *= a_long; 32 assertEQ(a_int, 12340) 33 34 a_int = 2000 as int; 35 a_long = 1234 as long; 36 a_int /= a_long; 37 assertEQ(a_int, 1) 38 39 a_int = 2000 as int; 40 a_long = 1234 as long; 41 a_int %= a_long; 42 assertEQ(a_int, 766) 43 44 a_int = 2 as int; 45 a_long = 1 as long; 46 a_int ^= a_long; 47 assertEQ(a_int, 3) 48 49 a_int = 2 as int; 50 a_long = 1 as long; 51 a_int |= a_long; 52 assertEQ(a_int, 3) 53 54 a_int = 2 as int; 55 a_long = 1 as long; 56 a_int &= a_long; 57 assertEQ(a_int, 0) 58 59 a_int = 512 as int; 60 a_long = 1 as long; 61 a_int <<= a_long; 62 assertEQ(a_int, 1024) 63 64 a_int = 512 as int; 65 a_long = 1 as long; 66 a_int >>= a_long; 67 assertEQ(a_int, 256) 68 69 a_int = 512 as int; 70 a_long = 1 as long; 71 a_int >>>= a_long; 72 assertEQ(a_int, 256) 73 74 //---------------------- 75 76 a_int = 10 as int; 77 a_long = 20000000000 as long; 78 a_int += a_long; 79 assertEQ(a_int, -1474836470) 80 81 a_int = 10 as int; 82 a_long = 20000000000 as long; 83 a_int -= a_long; 84 assertEQ(a_int, 1474836490) 85 86 a_int = 10 as int; 87 a_long = 20000000000 as long; 88 a_int *= a_long; 89 assertEQ(a_int, -1863462912) 90 91 a_int = 2000 as int; 92 a_long = 20000000000 as long; 93 a_int /= a_long; 94 assertEQ(a_int, 0) 95 96 a_int = 2000 as int; 97 a_long = 20000000000 as long; 98 a_int %= a_long; 99 assertEQ(a_int, 2000) 100 101 a_int = 2 as int; 102 a_long = 20000000000 as long; 103 a_int ^= a_long; 104 assertEQ(a_int, -1474836478) 105 106 a_int = 2 as int; 107 a_long = 20000000000 as long; 108 a_int |= a_long; 109 assertEQ(a_int, -1474836478) 110 111 a_int = 2 as int; 112 a_long = 20000000000 as long; 113 a_int &= a_long; 114 assertEQ(a_int, 0) 115 116 a_int = 512 as int; 117 a_long = 20000000000 as long; 118 a_int <<= a_long; 119 assertEQ(a_int, 512) 120 121 a_int = 512 as int; 122 a_long = 20000000000 as long; 123 a_int >>= a_long; 124 assertEQ(a_int, 512) 125 126 a_int = 512 as int; 127 a_long = 20000000000 as long; 128 a_int >>>= a_long; 129 assertEQ(a_int, 512) 130 131 //---------------------- 132 133 let a_Int = 10 as Int; 134 let a_Long = 20000000000 as Long; 135 a_Long += a_Int; 136 assertEQ(a_Long, 20000000010) 137 138 a_Int = 10 as Int; 139 a_Long = 20000000000 as Long; 140 a_Long -= a_Int; 141 assertEQ(a_Long, 19999999990) 142 143 a_Int = 10 as Int; 144 a_Long = 20000000000 as Long; 145 a_Long *= a_Int; 146 assertEQ(a_Long, 200000000000) 147 148 a_Int = 2000 as Int; 149 a_Long = 20000000000 as Long; 150 a_Long /= a_Int; 151 assertEQ(a_Long, 10000000) 152 153 a_Int = 2000 as Int; 154 a_Long = 20000000000 as Long; 155 a_Long %= a_Int; 156 assertEQ(a_Long, 0) 157 158 a_Int = 2 as Int; 159 a_Long = 20000000000 as Long; 160 a_Long ^= a_Int; 161 assertEQ(a_Long, 20000000002) 162 163 a_Int = 2 as Int; 164 a_Long = 20000000000 as Long; 165 a_Long |= a_Int; 166 assertEQ(a_Long, 20000000002) 167 168 a_Int = 2 as Int; 169 a_Long = 20000000000 as Long; 170 a_Long &= a_Int; 171 assertEQ(a_Long, 0) 172 173 a_Int = 512 as Int; 174 a_Long = 20000000000 as Long; 175 a_Long <<= a_Int; 176 assertEQ(a_Long, 20000000000) 177 178 a_Int = 512 as Int; 179 a_Long = 20000000000 as Long; 180 a_Long >>= a_Int; 181 assertEQ(a_Long, 20000000000) 182 183 a_Int = 512 as Int; 184 a_Long = 20000000000 as Long; 185 a_Long >>>= a_Int; 186 assertEQ(a_Long, 20000000000) 187 188 return 0; 189} 190