Skip to content

Commit 97b656a

Browse files
authored
KTLN-631: Check Whether a Character is a Vowel or Consonant in Kotlin (#589)
* Added Unit test * code fixes * code fixes * code fixes * code fixes * code changes
1 parent e1cbede commit 97b656a

File tree

1 file changed

+99
-0
lines changed

1 file changed

+99
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package com.baeldung.vowelOrConsonant
2+
3+
import org.junit.jupiter.api.Test
4+
import kotlin.test.assertTrue
5+
import kotlin.test.assertFalse
6+
7+
class VowelOrConsonantUnitTest {
8+
val isLetterRegex = "[a-zA-Z]".toRegex()
9+
val isVowelLetterRegex = "[AEIOUaeiou]".toRegex()
10+
@Test
11+
fun `using when expression`() {
12+
assertTrue(isVowel('e'))
13+
assertTrue(isVowel('I'))
14+
assertTrue(isVowel('o'))
15+
assertFalse(isConsonant('o'))
16+
assertFalse(isVowel('H'))
17+
assertTrue(isConsonant('H'))
18+
assertFalse(isVowel('@'))
19+
assertFalse(isConsonant('@'))
20+
}
21+
22+
@Test
23+
fun `using Map method`() {
24+
assertTrue(isVowelUsingMap('e'))
25+
assertTrue(isVowelUsingMap('I'))
26+
assertTrue(isVowelUsingMap('o'))
27+
assertFalse(isConsonantUsingMap('o'))
28+
assertFalse(isVowelUsingMap('H'))
29+
assertTrue(isConsonantUsingMap('H'))
30+
assertFalse(isVowelUsingMap('@'))
31+
assertFalse(isConsonantUsingMap('@'))
32+
}
33+
34+
@Test
35+
fun `using regex method`() {
36+
assertTrue(isVowelUsingRegexMethod('e'))
37+
assertTrue(isVowelUsingRegexMethod('I'))
38+
assertTrue(isVowelUsingRegexMethod('o'))
39+
assertFalse(isConsonantUsingRegex('o'))
40+
assertFalse(isVowelUsingRegexMethod('H'))
41+
assertTrue(isConsonantUsingRegex('H'))
42+
assertFalse(isVowelUsingRegexMethod('@'))
43+
assertFalse(isConsonantUsingRegex('@'))
44+
}
45+
@Test
46+
fun `using ASCII values method`() {
47+
assertTrue(isVowelUsingAsciiValues('E'))
48+
assertTrue(isVowelUsingAsciiValues('I'))
49+
assertTrue(isVowelUsingAsciiValues('o'))
50+
assertFalse(isConsonantUsingAscii('o'))
51+
assertFalse(isVowelUsingAsciiValues('H'))
52+
assertTrue(isConsonantUsingAscii('H'))
53+
assertFalse(isVowelUsingAsciiValues('@'))
54+
assertFalse(isConsonantUsingAscii('@'))
55+
}
56+
57+
fun isVowel(c: Char): Boolean {
58+
return when (c) {
59+
'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' -> true
60+
else -> false
61+
}
62+
}
63+
64+
fun isConsonant(c: Char): Boolean {
65+
return !isVowel(c) && c.isLetter()
66+
}
67+
68+
fun isVowelUsingMap(c: Char): Boolean {
69+
val vowels = mapOf(
70+
'a' to true,
71+
'e' to true,
72+
'i' to true,
73+
'o' to true,
74+
'u' to true )
75+
return vowels.containsKey(c.lowercaseChar())
76+
}
77+
78+
fun isConsonantUsingMap(c: Char): Boolean {
79+
return !isVowelUsingMap(c) && c.isLetter()
80+
}
81+
82+
fun isVowelUsingRegexMethod(c: Char): Boolean {
83+
return c.toString().matches(isVowelLetterRegex)
84+
}
85+
86+
fun isConsonantUsingRegex(c: Char): Boolean {
87+
return !isVowelUsingRegexMethod(c) && c.toString().matches(isLetterRegex)
88+
}
89+
90+
fun isVowelUsingAsciiValues(c: Char): Boolean {
91+
val ascii = c.code
92+
return ascii == 65 || ascii == 69 || ascii == 73 || ascii == 79 || ascii == 85 || ascii == 97 || ascii == 101 || ascii == 105 || ascii == 111 || ascii == 117
93+
}
94+
95+
fun isConsonantUsingAscii(c: Char): Boolean {
96+
val ascii = c.code
97+
return (ascii in 65..90 || ascii in 97..122) && !isVowelUsingAsciiValues(c)
98+
}
99+
}

0 commit comments

Comments
 (0)