Skip to content

Commit 44feb92

Browse files
authored
Merge pull request #1037 from sk1418/iterate-enum-items
Iterate enum items
2 parents f203e8f + 4fd4d02 commit 44feb92

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package iterateEnumEntries
2+
3+
import iterateEnumEntries.Holiday.*
4+
import iterateEnumEntries.Weekday.*
5+
import org.junit.jupiter.api.Assertions.*
6+
import org.junit.jupiter.api.Test
7+
8+
enum class Weekday {
9+
MON, TUE, WED, THU, FRI
10+
}
11+
12+
enum class Holiday {
13+
Eastern, Christmas, LaborDay, NewYear
14+
}
15+
16+
class IterateEnumEntriesUnitTest {
17+
private val expectedWeekdayArray = arrayOf(MON, TUE, WED, THU, FRI)
18+
private val expectedWeekdayList = listOf(MON, TUE, WED, THU, FRI)
19+
20+
private val expectedHolidayArray = arrayOf(Eastern, Christmas, LaborDay, NewYear)
21+
22+
@Test
23+
fun `when using values() then get correct iterable`() {
24+
val result = Weekday.values()
25+
assertArrayEquals(expectedWeekdayArray, result)
26+
}
27+
28+
@Test
29+
fun `when using entries() then get correct iterable`() {
30+
val result = Weekday.entries
31+
assertEquals(expectedWeekdayList, result)
32+
}
33+
34+
@Test
35+
fun `when using enumValues() then get correct iterable`() {
36+
val weekdayResult = enumValues<Weekday>()
37+
assertArrayEquals(expectedWeekdayArray, weekdayResult)
38+
39+
val holidayResult = enumValues<Holiday>()
40+
assertArrayEquals(expectedHolidayArray, holidayResult)
41+
}
42+
43+
inline fun <reified E : Enum<E>> findEnumByName(name: String): E? {
44+
// E.values() or E.entries doesn't compile
45+
return enumValues<E>().firstOrNull { it.name.equals(name.replace(" ", ""), ignoreCase = true) }
46+
}
47+
48+
49+
@Test
50+
fun `when using the generic itemNames then get correct iterable`() {
51+
val tuesday = findEnumByName<Weekday>("t U e")
52+
assertEquals(TUE, tuesday)
53+
54+
val newYear = findEnumByName<Holiday>("N E W Y E A R")
55+
assertEquals(NewYear, newYear)
56+
57+
val unknown = findEnumByName<Holiday>("Thanksgiving")
58+
assertNull(unknown)
59+
}
60+
}

0 commit comments

Comments
 (0)