Skip to content

Commit d7752e7

Browse files
authored
[enum-extension-fun] create a function for all enum classes (#769)
1 parent 7bb3d7f commit d7752e7

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
package com.baeldung.extensionOfEnum
2+
3+
import org.junit.jupiter.api.Test
4+
import kotlin.enums.EnumEntries
5+
import kotlin.test.assertEquals
6+
7+
enum class Level {
8+
A, B, C, D, E
9+
}
10+
11+
enum class WorkingDay(val n: Int) {
12+
MON(1), TUE(2), WED(3), THU(4), FRI(5);
13+
}
14+
15+
16+
class EnumExtensionFunctionsUnitTest {
17+
18+
@Test
19+
fun `when extending enum Array, then get expected result`() {
20+
fun <E : Enum<E>> Array<E>.joinTheirNames(): String {
21+
return joinToString { it.name }
22+
}
23+
24+
assertEquals("A, B, C, D, E", Level.values().joinTheirNames())
25+
assertEquals("MON, TUE, WED, THU, FRI", WorkingDay.values().joinTheirNames())
26+
}
27+
28+
@Test
29+
fun `when extending EnumEntries, then get expected result`() {
30+
fun EnumEntries<*>.joinTheirNames(): String {
31+
return joinToString { it.name }
32+
}
33+
34+
assertEquals("A, B, C, D, E", Level.entries.joinTheirNames())
35+
assertEquals("MON, TUE, WED, THU, FRI", WorkingDay.entries.joinTheirNames())
36+
}
37+
38+
39+
inline fun <reified E : Enum<E>> Enum.Companion.joinTheirNames(): String {
40+
return enumValues<E>().joinToString { it.name }
41+
}
42+
43+
@Test
44+
fun `when extending Enum's Companion object, then get expected result`() {
45+
assertEquals("A, B, C, D, E", Enum.joinTheirNames<Level>())
46+
assertEquals("MON, TUE, WED, THU, FRI", Enum.joinTheirNames<WorkingDay>())
47+
}
48+
49+
inline fun <reified E : Enum<E>> joinEnumNames(): String {
50+
return enumValues<E>().joinToString { it.name }
51+
}
52+
53+
@Test
54+
fun `when using a generic function, then get expected result`() {
55+
assertEquals("A, B, C, D, E", joinEnumNames<Level>())
56+
assertEquals("MON, TUE, WED, THU, FRI", joinEnumNames<WorkingDay>())
57+
}
58+
59+
}

0 commit comments

Comments
 (0)