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 18 _field: int = 30; 19 _bfield: boolean = true; 20 21 constructor() { } 22 23 get field(): int { 24 return this._field; 25 } 26 27 set field(a: int): void { 28 this._field = a; 29 } 30 31 get bfield(): boolean { 32 return this._bfield; 33 } 34 35 set bfield(b: boolean): void { 36 this._bfield = b; 37 } 38} 39 40function main(): void { 41 let obj: A = new A(); 42 43 let get_field = obj.field; 44 assert get_field == 30; 45 46 get_field = obj.field + obj.field; 47 assert get_field == 60; 48 49 get_field = obj.field + 10; 50 assert get_field == 40; 51 52 get_field = 10 + obj.field; 53 assert get_field == 40; 54 55 obj.field = 10; 56 get_field = obj.field; 57 assert get_field == 10; 58 59 obj.field = obj.field; 60 get_field = obj.field; 61 assert get_field == 10; 62 63 obj.field = obj.field + obj.field; 64 get_field = obj.field; 65 assert get_field == 20; 66 67 obj.field = obj.field + 10; 68 get_field = obj.field; 69 assert get_field == 30; 70 71 obj.field = 10 + obj.field; 72 get_field = obj.field; 73 assert get_field == 40; 74 75 obj.field = 10 * obj.field; 76 get_field = obj.field; 77 assert get_field == 400; 78 79 obj.field = obj.field / 2; 80 get_field = obj.field; 81 assert get_field == 200; 82 83 obj.field = 1; 84 obj.field = obj.field & 0; 85 get_field = obj.field; 86 assert get_field == 0; 87 88 obj._bfield = true; 89 obj._bfield = obj._bfield & false; 90 let get_bfield = obj._bfield; 91 assert get_bfield == false; 92 93 obj._bfield = true; 94 obj._bfield = obj._bfield | false; 95 get_bfield = obj._bfield; 96 assert get_bfield == true; 97 98 obj._bfield = true; 99 obj._bfield = obj._bfield | obj._bfield; 100 get_bfield = obj._bfield; 101 assert get_bfield == true; 102} 103