@@ -3,22 +3,23 @@ package org.scalajs.testsuite.compiler
3
3
import org .junit .Assert ._
4
4
import org .junit .Test
5
5
6
- object EnumTestScala3 :
6
+ class EnumTestScala3 :
7
+ import EnumTestScala3 ._
7
8
8
- enum Color1 derives Eql :
9
- case Red , Green , Blue
9
+ @ Test def testColor1 () : Unit =
10
+ import EnumTestScala3 .{ Color1 => Color }
10
11
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'
13
16
14
- def color1 (): Unit =
15
- import EnumTestScala3 .{Color1 => Color }
16
17
assert(Color .Red .ordinal == 0 )
17
18
assert(Color .Green .ordinal == 1 )
18
19
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" )
22
23
assert(Color .valueOf(" Red" ) == Color .Red )
23
24
assert(Color .valueOf(" Green" ) == Color .Green )
24
25
assert(Color .valueOf(" Blue" ) == Color .Blue )
@@ -27,16 +28,26 @@ object EnumTestScala3:
27
28
assert(Color .values(0 ) == Color .Red )
28
29
assert(Color .values(1 ) == Color .Green )
29
30
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
31
36
32
- def color2 (): Unit = // copied from `color1`
37
+ @ Test def testColor2 (): Unit = // copied from `color1`
33
38
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
+
34
45
assert(Color .Red .ordinal == 0 )
35
46
assert(Color .Green .ordinal == 1 )
36
47
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" )
40
51
assert(Color .valueOf(" Red" ) == Color .Red )
41
52
assert(Color .valueOf(" Green" ) == Color .Green )
42
53
assert(Color .valueOf(" Blue" ) == Color .Blue )
@@ -45,27 +56,26 @@ object EnumTestScala3:
45
56
assert(Color .values(0 ) == Color .Red )
46
57
assert(Color .values(1 ) == Color .Green )
47
58
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' )
55
62
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
60
64
61
- def currency1 (): Unit =
65
+ @ Test def testCurrency1 (): Unit =
62
66
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
+
63
73
assert(Currency .Dollar .ordinal == 0 )
64
74
assert(Currency .SwissFanc .ordinal == 1 )
65
75
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" )
69
79
assert(Currency .valueOf(" Dollar" ) == Currency .Dollar )
70
80
assert(Currency .valueOf(" SwissFanc" ) == Currency .SwissFanc )
71
81
assert(Currency .valueOf(" Euro" ) == Currency .Euro )
@@ -77,16 +87,27 @@ object EnumTestScala3:
77
87
assert(Currency .Dollar .dollarValue == 1.00 )
78
88
assert(Currency .SwissFanc .dollarValue == 1.09 )
79
89
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
+
81
94
82
- def currency2 (): Unit = // copied from `currency1`
95
+ end testCurrency1
96
+
97
+ @ Test def testCurrency2 (): Unit = // copied from `testCurrency1`
83
98
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
+
84
105
assert(Currency .Dollar .ordinal == 0 )
85
106
assert(Currency .SwissFanc .ordinal == 1 )
86
107
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" )
90
111
assert(Currency .valueOf(" Dollar" ) == Currency .Dollar )
91
112
assert(Currency .valueOf(" SwissFanc" ) == Currency .SwissFanc )
92
113
assert(Currency .valueOf(" Euro" ) == Currency .Euro )
@@ -98,26 +119,51 @@ object EnumTestScala3:
98
119
assert(Currency .Dollar .dollarValue == 1.00 )
99
120
assert(Currency .SwissFanc .dollarValue == 1.09 )
100
121
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" )
102
125
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
106
133
107
- def opt (): Unit =
108
134
assert(Opt .Sm (1 ).ordinal == 0 )
109
135
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" )
112
138
assert(Opt .valueOf(" Nn" ) == Opt .Nn )
113
139
assert(Opt .values(0 ) == Opt .Nn )
114
140
assert(Opt .Sm (" hello" ).value == " hello" )
115
- end opt
141
+ assert(encode(Opt .Sm (23 )) == 23 )
142
+ assert(encode(Opt .Nn ) == null )
116
143
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