Skip to content

Commit 1182a7f

Browse files
authored
KTLN-461: Check if an Enum Value Contains a Given String in Kotlin (#814)
* pom kotlin version * pom version * unit test code * fixed unit test code
1 parent c085bc1 commit 1182a7f

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package com.baeldung.enumValueContainsString
2+
3+
import org.junit.jupiter.api.Assertions.assertFalse
4+
import org.junit.jupiter.api.Assertions.assertTrue
5+
import org.junit.jupiter.api.Test
6+
7+
class EnumValueContainsStringUnitTest {
8+
9+
@Test
10+
fun `checks if enum value contains a specific string correctly using for loop`() {
11+
assertFalse(containsValueUsingForLoop("RED"))
12+
assertTrue(containsValueUsingForLoop("WEDNESDAY"))
13+
assertFalse(containsValueUsingForLoop("AUGUST"))
14+
assertTrue(containsValueUsingForLoop("SATURDAY"))
15+
}
16+
17+
@Test
18+
fun `checks if enum value contains a specific string correctly using when expression`() {
19+
assertFalse(containsValueUsingWhenExpression("RED"))
20+
assertTrue(containsValueUsingWhenExpression("WEDNESDAY"))
21+
assertFalse(containsValueUsingWhenExpression("AUGUST"))
22+
assertTrue(containsValueUsingWhenExpression("SATURDAY"))
23+
}
24+
25+
@Test
26+
fun `checks if enum value contains a specific string correctly using any method`() {
27+
val names = DaysOfWeek.values()
28+
29+
assertFalse(names.any { it.name == "RED" })
30+
assertTrue(names.any { it.name == "WEDNESDAY" })
31+
assertFalse(names.any { it.name == "AUGUST" })
32+
assertTrue(names.any { it.name == "SATURDAY" })
33+
}
34+
35+
@Test
36+
fun `checks if enum value contains a specific string correctly using map method`() {
37+
val names = DaysOfWeek.values().map { it.name}
38+
39+
assertFalse(names.contains("RED"))
40+
assertTrue(names.contains("WEDNESDAY"))
41+
assertFalse(names.contains("AUGUST"))
42+
assertTrue(names.contains("SATURDAY"))
43+
}
44+
45+
@Test
46+
fun `checks if enum value contains a specific string correctly using a hashset`() {
47+
assertFalse(containsValueUsingHashSet("RED"))
48+
assertTrue(containsValueUsingHashSet("WEDNESDAY"))
49+
assertFalse(containsValueUsingHashSet("AUGUST"))
50+
assertTrue(containsValueUsingHashSet("SATURDAY"))
51+
}
52+
53+
}
54+
enum class DaysOfWeek {
55+
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY;
56+
57+
companion object {
58+
// generate names once.
59+
val names by lazy { DaysOfWeek.values().map{ it.name } }
60+
}
61+
}
62+
63+
64+
fun containsValueUsingForLoop(value: String): Boolean {
65+
for (day in DaysOfWeek.values()) {
66+
if (day.name == value) {
67+
return true
68+
}
69+
}
70+
return false
71+
}
72+
73+
fun containsValueUsingWhenExpression(value: String): Boolean {
74+
return when (value) {
75+
in DaysOfWeek.names -> true
76+
else -> false
77+
}
78+
}
79+
80+
fun containsValueUsingHashSet(value: String): Boolean {
81+
val set = HashSet<String>()
82+
DaysOfWeek.values().forEach { set.add(it.name) }
83+
return set.contains(value)
84+
}

0 commit comments

Comments
 (0)