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