71 lines
No EOL
2.2 KiB
Kotlin
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()
|
|
}
|
|
} |