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 16enum Color { Green = "red" , Red = "blue", Blue = "green" } 17//let cons = new Console; 18 19function main(): void { 20 21 try { 22 let name = Color.Blue.getName(); 23 let value:string = Color.getValueOf("Blue").toString(); 24 assert(name == "Blue"); 25 assert(value == "green"); 26 //cons.print(name + " = " + value + c'\n'); 27 } catch (e) { 28 assert (e as Object).toString().startsWith("No enum constant Color.Blue"); 29 } 30 31 let x = Color.Red.valueOf(); 32 assert x == "blue"; 33 34 let blue = Color.Blue; 35 let str = blue.getName(); 36 //cons.print("Color.Blue = '" + str + "'\n"); 37 assert "Blue" == str; 38 assert blue.valueOf() == blue.toString() 39 40 let values = Color.values(); 41 assert values.length == 3; 42 assert values[1] == Color.Red; 43 assert values[0] == Color.Green; 44 assert values[2] == Color.Blue; 45 46 let red1: Color = Color.Red; 47 let red2: Color = Color.Green; 48 assert(red2 as int == 0) 49 assert(red2.valueOf() == "red") 50 assert(red2.getName() == "Green") 51 assert(red2.toString() == "red") 52 //cons.print("\nDefault ordinal = " + red2 as int + ", value = " + red2.valueOf() + ", name: '" + red2.getName() + "', ToString: '" + red2.toString() + "'\n\n") 53 54 try { 55 red2 = Color.getValueOf("Red"); 56 } catch (e) { 57 assert (e as Object).toString().startsWith("No enum constant Color.Red"); 58 //cons.print(e.toString() + "\n"); 59 } 60 61 //cons.print( "GetName: Color.Red: '" + Color.Red.getName() + "', = Red: '" + red1.getName() + "', ValueOf(Red): '" + red2.getName() + "'\n") 62 //cons.print( "GetValue: Color.Red = " + Color.Red.valueOf() + ", = Red = " + red1.valueOf() + ", getValueOf(Red) = " + red2.valueOf() + "\n") 63 //cons.print( "Ordinal (as int): Color.Red = " + Color.Red as int + ", = Red = " + red1 as int + ", getValueOf(Red) = " + red2 as int + "\n") 64 //cons.print( "ToString: Color.Red = '" + Color.Red.toString() + "', = Red = '" + red1.toString() + "', getValueOf(Red) = '" + red2.toString() + "'\n") 65 66 assert(red1 as int == 1) 67 assert(red1.valueOf() == "blue") 68 assert(red1.getName() == "Red") 69 assert(red1.toString() == "blue") 70 71 assert(red2 as int == 1) 72 assert(red2.valueOf() == "blue") 73 assert(red2.getName() == "Red") 74 assert(red2.toString() == "blue") 75 76 assert(red1 == Color.Red); 77 assert(red2 == Color.Red); 78 assert(red2 == red1); 79 80 let ord: int = 2; 81 blue = ord as Color; 82 assert(blue as int == 2) 83 assert(blue.valueOf() == "green") 84 assert(blue.getName() == "Blue") 85 assert(blue.toString() == "green") 86 87 try { 88 let yellow: Color = Color.getValueOf("Yellow"); 89 assert false; 90 } catch (e: Exception) { 91 assert (e as Object).toString().startsWith("No enum constant Color.Yellow"); 92 } catch (e) {} 93 94 ord = 0; 95 let green: Color = ord as Color; 96 //cons.print("Green = " + green as int + ", Color.Green = " + Color.Green as int + "\n") 97 assert green == Color.Green; 98 99 try { 100 let x = 5 as Color; 101 assert false; 102 } catch (e: Exception) { 103 assert (e as Object).toString().startsWith("No enum constant in Color with ordinal value 5"); 104 } 105 106 assert 2 as Color as int == 2; 107 assert Color.Blue as int as Color == Color.Blue; 108 assert (Color.Green as int + 1) as Color == (Color.Blue as int - 1) as Color; 109 try { 110 assert (Color.Green as int + 1) as Color == Color.getValueOf("Red"); 111 } catch (e) { 112 } 113} 114