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