1
1
package iterateEnumEntries
2
2
3
- import iterateEnumEntries.DayInWeek.*
4
- import org.junit.jupiter.api.Assertions.assertArrayEquals
3
+ import iterateEnumEntries.Holiday.*
4
+ import iterateEnumEntries.Weekday.*
5
+ import org.junit.jupiter.api.Assertions.*
5
6
import org.junit.jupiter.api.Test
6
- import kotlin.test.assertEquals
7
7
8
- enum class DayInWeek {
9
- MON , TUE , WED , THU , FRI , SAT , SUN
8
+ enum class Weekday {
9
+ MON , TUE , WED , THU , FRI
10
+ }
11
+
12
+ enum class Holiday {
13
+ Eastern , Christmas , LaborDay , NewYear
10
14
}
11
15
12
16
class IterateEnumEntriesUnitTest {
13
- val expectedArray = arrayOf(MON , TUE , WED , THU , FRI , SAT , SUN )
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 )
14
21
15
22
@Test
16
23
fun `when using values() then get correct iterable` () {
17
- val result = DayInWeek .values()
24
+ val result = Weekday .values()
25
+ assertArrayEquals(expectedWeekdayArray, result)
26
+ }
18
27
19
- assertArrayEquals(expectedArray, result)
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)
20
38
39
+ val holidayResult = enumValues<Holiday >()
40
+ assertArrayEquals(expectedHolidayArray, holidayResult)
21
41
}
22
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
+ }
23
60
}
0 commit comments