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