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 16class A { 17 _field: int = 30; 18 19 get field(): int { 20 return this._field; 21 } 22 23 set field(field: int) { 24 this._field = field; 25 } 26} 27 28function main(): void { 29 let objectos = new A; 30 31 // left side 32 objectos.field += 10; 33 assertEQ(objectos.field, 40) 34 35 objectos.field -= 200; 36 assertEQ(objectos.field, -160) 37 38 objectos.field += 260; 39 objectos.field *= 10; 40 assertEQ(objectos.field, 1000) 41 42 objectos.field /= 100; 43 assertEQ(objectos.field, 10) 44 45 objectos.field = 16; 46 objectos.field >>= 2 47 assertEQ(objectos.field, 4) 48 49 objectos.field = 16; 50 objectos.field >>>= 1 51 assertEQ(objectos.field, 8) 52 53 objectos.field = 8; 54 objectos.field <<= 1 55 assertEQ(objectos.field, 16) 56 57 objectos.field = 5; 58 objectos.field %= 2 59 assertEQ(objectos.field, 1) 60 61 objectos.field = 15; 62 objectos.field &= 7 63 assertEQ(objectos.field, 7) 64 65 objectos.field = 15; 66 objectos.field |= 7 67 assertEQ(objectos.field, 15) 68 69 objectos.field = 15; 70 objectos.field ^= 7 71 assertEQ(objectos.field, 8) 72 73 // left and right side 74 75 objectos.field = 100; 76 objectos.field += objectos.field; 77 assertEQ(objectos.field, 200) 78 79 objectos.field -= objectos.field; 80 assertEQ(objectos.field, 0) 81 82 objectos.field += 100; 83 objectos.field *= objectos.field; 84 assertEQ(objectos.field, 10000) 85 86 objectos.field /= objectos.field; 87 assertEQ(objectos.field, 1) 88 89 objectos.field |= objectos.field 90 assertEQ(objectos.field, 1) 91 92 // right side 93 94 let value = 100; 95 objectos.field = 2; 96 97 value += objectos.field; 98 assertEQ(value, 102) 99 100 value -= objectos.field; 101 assertEQ(value, 100) 102 103 value *= objectos.field; 104 assertEQ(value, 200) 105 106 value /= objectos.field; 107 assertEQ(value, 100) 108 109 value = 16; 110 value >>= objectos.field 111 assertEQ(value, 4) 112 113 value = 16; 114 value >>>= objectos.field 115 assertEQ(value, 4) 116 117 value = 8; 118 value <<= objectos.field 119 assertEQ(value, 32) 120 121 value = 5; 122 value %= objectos.field 123 assertEQ(value, 1) 124 125 value = 15; 126 value &= objectos.field 127 assertEQ(value, 2) 128 129 value = 15; 130 value |= objectos.field 131 assertEQ(value, 15) 132 133 value = 15; 134 value ^= objectos.field 135 assertEQ(value, 13) 136} 137