@@ -3,22 +3,23 @@ package org.scalajs.testsuite.compiler
33import org .junit .Assert ._
44import org .junit .Test
55
6- object EnumTestScala3 :
6+ class EnumTestScala3 :
7+ import EnumTestScala3 ._
78
8- enum Color1 derives Eql :
9- case Red , Green , Blue
9+ @ Test def testColor1 () : Unit =
10+ import EnumTestScala3 .{ Color1 => Color }
1011
11- enum Color2 extends java.lang.Enum [Color2 ] derives Eql :
12- case Red , Green , Blue
12+ def code (c : Color ): Character = c match
13+ case Color .Red => 'R'
14+ case Color .Green => 'G'
15+ case Color .Blue => 'B'
1316
14- def color1 (): Unit =
15- import EnumTestScala3 .{Color1 => Color }
1617 assert(Color .Red .ordinal == 0 )
1718 assert(Color .Green .ordinal == 1 )
1819 assert(Color .Blue .ordinal == 2 )
19- assert(Color .Red .enumLabel == " Red" )
20- assert(Color .Green .enumLabel == " Green" )
21- assert(Color .Blue .enumLabel == " Blue" )
20+ assert(Color .Red .productPrefix == " Red" )
21+ assert(Color .Green .productPrefix == " Green" )
22+ assert(Color .Blue .productPrefix == " Blue" )
2223 assert(Color .valueOf(" Red" ) == Color .Red )
2324 assert(Color .valueOf(" Green" ) == Color .Green )
2425 assert(Color .valueOf(" Blue" ) == Color .Blue )
@@ -27,16 +28,26 @@ object EnumTestScala3:
2728 assert(Color .values(0 ) == Color .Red )
2829 assert(Color .values(1 ) == Color .Green )
2930 assert(Color .values(2 ) == Color .Blue )
30- end color1
31+ assert(code(Color .Red ) == 'R' )
32+ assert(code(Color .Green ) == 'G' )
33+ assert(code(Color .Blue ) == 'B' )
34+
35+ end testColor1
3136
32- def color2 (): Unit = // copied from `color1`
37+ @ Test def testColor2 (): Unit = // copied from `color1`
3338 import EnumTestScala3 .{Color2 => Color }
39+
40+ def code (c : Color ): Character = c match
41+ case Color .Red => 'R'
42+ case Color .Green => 'G'
43+ case Color .Blue => 'B'
44+
3445 assert(Color .Red .ordinal == 0 )
3546 assert(Color .Green .ordinal == 1 )
3647 assert(Color .Blue .ordinal == 2 )
37- assert(Color .Red .enumLabel == " Red" )
38- assert(Color .Green .enumLabel == " Green" )
39- assert(Color .Blue .enumLabel == " Blue" )
48+ assert(Color .Red .productPrefix == " Red" )
49+ assert(Color .Green .productPrefix == " Green" )
50+ assert(Color .Blue .productPrefix == " Blue" )
4051 assert(Color .valueOf(" Red" ) == Color .Red )
4152 assert(Color .valueOf(" Green" ) == Color .Green )
4253 assert(Color .valueOf(" Blue" ) == Color .Blue )
@@ -45,27 +56,26 @@ object EnumTestScala3:
4556 assert(Color .values(0 ) == Color .Red )
4657 assert(Color .values(1 ) == Color .Green )
4758 assert(Color .values(2 ) == Color .Blue )
48- end color2
49-
50- // test "non-simple" cases with anonymous subclasses
51- enum Currency1 (val dollarValue : Double ) derives Eql :
52- case Dollar extends Currency1 (1.0 )
53- case SwissFanc extends Currency1 (1.09 )
54- case Euro extends Currency1 (1.18 )
59+ assert(code(Color .Red ) == 'R' )
60+ assert(code(Color .Green ) == 'G' )
61+ assert(code(Color .Blue ) == 'B' )
5562
56- enum Currency2 (val dollarValue : Double ) extends java.lang.Enum [Currency2 ] derives Eql :
57- case Dollar extends Currency2 (1.0 )
58- case SwissFanc extends Currency2 (1.09 )
59- case Euro extends Currency2 (1.18 )
63+ end testColor2
6064
61- def currency1 (): Unit =
65+ @ Test def testCurrency1 (): Unit =
6266 import EnumTestScala3 .{Currency1 => Currency }
67+
68+ def code (c : Currency ): String = c match
69+ case Currency .Dollar => " USD"
70+ case Currency .SwissFanc => " CHF"
71+ case Currency .Euro => " EUR"
72+
6373 assert(Currency .Dollar .ordinal == 0 )
6474 assert(Currency .SwissFanc .ordinal == 1 )
6575 assert(Currency .Euro .ordinal == 2 )
66- assert(Currency .Dollar .enumLabel == " Dollar" )
67- assert(Currency .SwissFanc .enumLabel == " SwissFanc" )
68- assert(Currency .Euro .enumLabel == " Euro" )
76+ assert(Currency .Dollar .productPrefix == " Dollar" )
77+ assert(Currency .SwissFanc .productPrefix == " SwissFanc" )
78+ assert(Currency .Euro .productPrefix == " Euro" )
6979 assert(Currency .valueOf(" Dollar" ) == Currency .Dollar )
7080 assert(Currency .valueOf(" SwissFanc" ) == Currency .SwissFanc )
7181 assert(Currency .valueOf(" Euro" ) == Currency .Euro )
@@ -77,16 +87,27 @@ object EnumTestScala3:
7787 assert(Currency .Dollar .dollarValue == 1.00 )
7888 assert(Currency .SwissFanc .dollarValue == 1.09 )
7989 assert(Currency .Euro .dollarValue == 1.18 )
80- end currency1
90+ assert(code(Currency .Dollar ) == " USD" )
91+ assert(code(Currency .SwissFanc ) == " CHF" )
92+ assert(code(Currency .Euro ) == " EUR" )
93+
8194
82- def currency2 (): Unit = // copied from `currency1`
95+ end testCurrency1
96+
97+ @ Test def testCurrency2 (): Unit = // copied from `testCurrency1`
8398 import EnumTestScala3 .{Currency2 => Currency }
99+
100+ def code (c : Currency ): String = c match
101+ case Currency .Dollar => " USD"
102+ case Currency .SwissFanc => " CHF"
103+ case Currency .Euro => " EUR"
104+
84105 assert(Currency .Dollar .ordinal == 0 )
85106 assert(Currency .SwissFanc .ordinal == 1 )
86107 assert(Currency .Euro .ordinal == 2 )
87- assert(Currency .Dollar .enumLabel == " Dollar" )
88- assert(Currency .SwissFanc .enumLabel == " SwissFanc" )
89- assert(Currency .Euro .enumLabel == " Euro" )
108+ assert(Currency .Dollar .productPrefix == " Dollar" )
109+ assert(Currency .SwissFanc .productPrefix == " SwissFanc" )
110+ assert(Currency .Euro .productPrefix == " Euro" )
90111 assert(Currency .valueOf(" Dollar" ) == Currency .Dollar )
91112 assert(Currency .valueOf(" SwissFanc" ) == Currency .SwissFanc )
92113 assert(Currency .valueOf(" Euro" ) == Currency .Euro )
@@ -98,26 +119,51 @@ object EnumTestScala3:
98119 assert(Currency .Dollar .dollarValue == 1.00 )
99120 assert(Currency .SwissFanc .dollarValue == 1.09 )
100121 assert(Currency .Euro .dollarValue == 1.18 )
101- end currency2
122+ assert(code(Currency .Dollar ) == " USD" )
123+ assert(code(Currency .SwissFanc ) == " CHF" )
124+ assert(code(Currency .Euro ) == " EUR" )
102125
103- enum Opt [+ T ]:
104- case Sm [+ T1 ](value : T1 ) extends Opt [T1 ]
105- case Nn extends Opt [Nothing ]
126+ end testCurrency2
127+
128+ @ Test def testOpt (): Unit =
129+
130+ def encode [T <: AnyVal ](t : Opt [T ]): T | Null = t match
131+ case Opt .Sm (t) => t
132+ case Opt .Nn => null
106133
107- def opt (): Unit =
108134 assert(Opt .Sm (1 ).ordinal == 0 )
109135 assert(Opt .Nn .ordinal == 1 )
110- assert(Opt .Sm (1 ).enumLabel == " Sm" )
111- assert(Opt .Nn .enumLabel == " Nn" )
136+ assert(Opt .Sm (1 ).productPrefix == " Sm" )
137+ assert(Opt .Nn .productPrefix == " Nn" )
112138 assert(Opt .valueOf(" Nn" ) == Opt .Nn )
113139 assert(Opt .values(0 ) == Opt .Nn )
114140 assert(Opt .Sm (" hello" ).value == " hello" )
115- end opt
141+ assert(encode(Opt .Sm (23 )) == 23 )
142+ assert(encode(Opt .Nn ) == null )
116143
117- class EnumTestScala3 :
118- import EnumTestScala3 ._
119- @ Test def testColor1 (): Unit = color1()
120- @ Test def testColor2 (): Unit = color2()
121- @ Test def testCurrency1 (): Unit = currency1()
122- @ Test def testCurrency2 (): Unit = currency2()
123- @ Test def testOpt (): Unit = opt()
144+ end testOpt
145+
146+ object EnumTestScala3 :
147+
148+ enum Color1 derives Eql :
149+ case Red , Green , Blue
150+
151+ enum Color2 extends java.lang.Enum [Color2 ] derives Eql :
152+ case Red , Green , Blue
153+
154+ // test "non-simple" cases with anonymous subclasses
155+ enum Currency1 (val dollarValue : Double ) derives Eql :
156+ case Dollar extends Currency1 (1.0 )
157+ case SwissFanc extends Currency1 (1.09 )
158+ case Euro extends Currency1 (1.18 )
159+
160+ enum Currency2 (val dollarValue : Double ) extends java.lang.Enum [Currency2 ] derives Eql :
161+ case Dollar extends Currency2 (1.0 )
162+ case SwissFanc extends Currency2 (1.09 )
163+ case Euro extends Currency2 (1.18 )
164+
165+ enum Opt [+ T ]:
166+ case Sm [+ T1 ](value : T1 ) extends Opt [T1 ]
167+ case Nn extends Opt [Nothing ]
168+
169+ end EnumTestScala3
0 commit comments