summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorSho Sakuma <me@m1sk9.dev>2026-02-07 18:49:23 +0900
committerSho Sakuma <me@m1sk9.dev>2026-02-07 18:51:06 +0900
commitf92ce317bb0dfc8331cb6a3b8e2f821b76a8d45a (patch)
treeaddfc3c294ed33897227846a61bbbbdc3f9a7e16 /engine
parentd77f7a5fe06113cd472e907643f1172a148d052a (diff)
downloadLunaticChat-f92ce317bb0dfc8331cb6a3b8e2f821b76a8d45a.tar.gz
LunaticChat-f92ce317bb0dfc8331cb6a3b8e2f821b76a8d45a.tar.bz2
LunaticChat-f92ce317bb0dfc8331cb6a3b8e2f821b76a8d45a.zip
test: Add kana converter test-case
Diffstat (limited to 'engine')
-rw-r--r--engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt85
1 files changed, 85 insertions, 0 deletions
diff --git a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt b/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt
index a348fa3..5ba7f0e 100644
--- a/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt
+++ b/engine/src/test/kotlin/dev/m1sk9/lunaticChat/engine/converter/KanaConverterTest.kt
@@ -2,6 +2,8 @@ package dev.m1sk9.lunaticChat.engine.converter
import kotlin.test.Test
import kotlin.test.assertEquals
+import kotlin.test.assertFalse
+import kotlin.test.assertTrue
class KanaConverterTest {
@Test
@@ -290,4 +292,87 @@ class KanaConverterTest {
val expected = "わたし わ にほんご を べんきょう しています"
assertEquals(expected, KanaConverter.toHiragana(input))
}
+
+ // isValidRomaji tests
+
+ @Test
+ fun `isValidRomaji should return true for valid romaji words`() {
+ assertTrue(KanaConverter.isValidRomaji("konnichiwa"))
+ assertTrue(KanaConverter.isValidRomaji("arigatou"))
+ assertTrue(KanaConverter.isValidRomaji("ohayou"))
+ assertTrue(KanaConverter.isValidRomaji("sumimasen"))
+ assertTrue(KanaConverter.isValidRomaji("ganbatte"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for single vowels`() {
+ assertTrue(KanaConverter.isValidRomaji("a"))
+ assertTrue(KanaConverter.isValidRomaji("i"))
+ assertTrue(KanaConverter.isValidRomaji("u"))
+ assertTrue(KanaConverter.isValidRomaji("e"))
+ assertTrue(KanaConverter.isValidRomaji("o"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for double consonants`() {
+ assertTrue(KanaConverter.isValidRomaji("kitte"))
+ assertTrue(KanaConverter.isValidRomaji("gakkou"))
+ assertTrue(KanaConverter.isValidRomaji("sappari"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for phrases with spaces`() {
+ assertTrue(KanaConverter.isValidRomaji("watashi wa nihongo wo benkyou shiteimasu"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for input with numbers and symbols`() {
+ assertTrue(KanaConverter.isValidRomaji("arigatou123"))
+ assertTrue(KanaConverter.isValidRomaji("konnichiwa!"))
+ assertTrue(KanaConverter.isValidRomaji("hai?"))
+ }
+
+ @Test
+ fun `isValidRomaji should return false for English words`() {
+ // These contain consonants that cannot be converted (e.g., 's' alone, 'v', 'c' without vowel pattern)
+ assertFalse(KanaConverter.isValidRomaji("This"))
+ assertFalse(KanaConverter.isValidRomaji("server"))
+ assertFalse(KanaConverter.isValidRomaji("version"))
+ assertFalse(KanaConverter.isValidRomaji("running"))
+ assertFalse(KanaConverter.isValidRomaji("Paper"))
+ }
+
+ @Test
+ fun `isValidRomaji should return false for words with unconvertable consonant endings`() {
+ // 's', 'r', 'c', 'v', 'l', 'x' alone or in non-romaji patterns cannot be converted
+ assertFalse(KanaConverter.isValidRomaji("test"))
+ assertFalse(KanaConverter.isValidRomaji("cat"))
+ assertFalse(KanaConverter.isValidRomaji("fix"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for n at word end`() {
+ assertTrue(KanaConverter.isValidRomaji("san"))
+ assertTrue(KanaConverter.isValidRomaji("nihon"))
+ assertTrue(KanaConverter.isValidRomaji("ramen"))
+ }
+
+ @Test
+ fun `isValidRomaji should handle uppercase input`() {
+ assertTrue(KanaConverter.isValidRomaji("KONNICHIWA"))
+ assertFalse(KanaConverter.isValidRomaji("THIS"))
+ assertFalse(KanaConverter.isValidRomaji("SERVER"))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for empty string`() {
+ assertTrue(KanaConverter.isValidRomaji(""))
+ }
+
+ @Test
+ fun `isValidRomaji should return true for only numbers and symbols`() {
+ assertTrue(KanaConverter.isValidRomaji("123"))
+ assertTrue(KanaConverter.isValidRomaji("!@#"))
+ assertTrue(KanaConverter.isValidRomaji("1.21.11-110"))
+ }
}