book-reader/app/src/androidTest/java/com/aryan/reader/tts/TtsUtilsTest.kt
2026-02-24 17:37:40 +05:30

71 lines
No EOL
2.2 KiB
Kotlin

// TtsUtilsTest.kt
package com.aryan.reader.tts
import com.google.common.truth.Truth.assertThat
import org.junit.Test
import org.junit.runner.RunWith
import androidx.test.ext.junit.runners.AndroidJUnit4
@RunWith(AndroidJUnit4::class)
class TtsUtilsTest {
@Test
fun splitTextIntoChunks_withShortText_returnsSingleChunk() {
val text = "This is a short sentence."
val chunks = splitTextIntoChunks(text, 100)
assertThat(chunks).containsExactly("This is a short sentence.")
}
@Test
fun splitTextIntoChunks_withMultipleSentences_splitsCorrectly() {
val text = "First sentence. Second sentence! Third sentence? And a fourth."
val chunks = splitTextIntoChunks(text, 20)
assertThat(chunks).containsExactly(
"First sentence.",
"Second sentence!",
"Third sentence?",
"And a fourth."
).inOrder()
}
@Test
fun splitTextIntoChunks_combinesShortSentences() {
val text = "First. Second. Third. Fourth."
val chunks = splitTextIntoChunks(text, maxLengthPerChunk = 20)
assertThat(chunks).containsExactly(
"First. Second.",
"Third. Fourth."
).inOrder()
}
@Test
fun splitTextIntoChunks_withLongSentence_doesNotSplitSentence() {
val text = "This is a very long sentence that exceeds the maximum chunk length but has no punctuation to split on."
val chunks = splitTextIntoChunks(text, 50)
assertThat(chunks).containsExactly(text)
}
@Test
fun splitTextIntoChunks_withEmptyText_returnsEmptyList() {
val text = ""
val chunks = splitTextIntoChunks(text, 100)
assertThat(chunks).isEmpty()
}
@Test
fun splitTextIntoChunks_withBlankText_returnsEmptyList() {
val text = " "
val chunks = splitTextIntoChunks(text, 100)
assertThat(chunks).isEmpty()
}
@Test
fun splitTextIntoChunks_handlesAbbreviations() {
val text = "Mr. Smith went to Washington. Dr. Jones followed."
val chunks = splitTextIntoChunks(text, 40)
assertThat(chunks).containsExactly(
"Mr. Smith went to Washington.",
"Dr. Jones followed."
).inOrder()
}
}