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