• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (c) 2024-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
16enum StringEnum {
17    A = "Apple",
18    B = "Banana",
19    C = "Cherry"
20}
21
22enum IntEnum {
23    One = 1,
24    Two = 2,
25    Three = 3,
26    Four = 4
27}
28
29enum ColorEnum {
30    Red = 5,
31    Green = 10,
32    Blue = 15
33}
34
35enum StatusEnum {
36    Active = 1,
37    Inactive = 0
38}
39
40enum TemperatureEnum {
41    Cold = 0,
42    Warm = 20,
43    Hot = 40
44}
45
46enum PermissionEnum {
47    Read = 1,
48    Write = 2,
49    Execute = 4
50}
51
52enum NumberEnum {
53    Ten = 10,
54    Twenty = 20,
55    Thirty = 30
56}
57
58enum VolumeEnum {
59    Low = 1,
60    Medium = 2,
61    High = 3
62}
63
64function main() {
65    assertEQ(StringEnum.A + StringEnum.B, "AppleBanana");
66    assertTrue(StringEnum.A < StringEnum.B);
67    assertTrue(StringEnum.A !== StringEnum.B);
68    assertTrue(StringEnum.C > StringEnum.A);
69
70    assertEQ(IntEnum.One + IntEnum.Two, 3);
71    assertEQ(IntEnum.Three - IntEnum.One, 2);
72    assertEQ(IntEnum.Four * IntEnum.Two, 8);
73    assertEQ(IntEnum.Four / IntEnum.Two, 2);
74
75    assertEQ(ColorEnum.Red + ColorEnum.Green, 15);
76    assertEQ(ColorEnum.Blue - ColorEnum.Green > 0 ? "Greater" : "Smaller", "Greater");
77
78    let status = StatusEnum.Active;
79    assertTrue(status === StatusEnum.Active);
80    assertTrue(status !== StatusEnum.Inactive);
81
82    status = StatusEnum.Inactive;
83    assertTrue(status === StatusEnum.Inactive);
84
85    assertEQ(Number(TemperatureEnum.Cold) + 10, 10);
86    assertEQ(Number(TemperatureEnum.Warm) * 2, 40);
87
88    assertTrue((PermissionEnum.Read & PermissionEnum.Write) === 0);
89    assertTrue((PermissionEnum.Read | PermissionEnum.Execute) === 5);
90    assertTrue((PermissionEnum.Read ^ PermissionEnum.Write) === 3);
91
92    assertEQ(NumberEnum.Ten + 10, 20);
93    assertEQ(NumberEnum.Twenty - 10, 10);
94    assertEQ(NumberEnum.Thirty * 2, 60);
95    assertEQ(NumberEnum.Twenty / 2, 10);
96    let volumeLevel = VolumeEnum.Medium;
97    let message = volumeLevel === VolumeEnum.Low ? "Low Volume" : (volumeLevel === VolumeEnum.Medium ? "Medium Volume" : "High Volume");
98    assertEQ(message, "Medium Volume");
99}
100