40 lines
1.2 KiB
Swift
40 lines
1.2 KiB
Swift
import Testing
|
|
@testable import VorleserKit
|
|
|
|
@Suite("SentenceSegmenter")
|
|
struct SentenceSegmenterTests {
|
|
@Test func segmentsSimpleSentences() {
|
|
let text = "Hello world. How are you? I am fine."
|
|
let sentences = SentenceSegmenter.segment(text)
|
|
#expect(sentences.count == 3)
|
|
#expect(sentences[0].text == "Hello world.")
|
|
#expect(sentences[1].text == "How are you?")
|
|
#expect(sentences[2].text == "I am fine.")
|
|
}
|
|
|
|
@Test func handlesAbbreviations() {
|
|
let text = "Dr. Smith went to Washington. He arrived at 3 p.m."
|
|
let sentences = SentenceSegmenter.segment(text)
|
|
// NLTokenizer should handle "Dr." without splitting
|
|
#expect(sentences.count == 2)
|
|
}
|
|
|
|
@Test func appliesGlobalOffset() {
|
|
let text = "First sentence. Second sentence."
|
|
let sentences = SentenceSegmenter.segment(text, globalOffset: 100)
|
|
#expect(sentences[0].range.lowerBound >= 100)
|
|
}
|
|
|
|
@Test func handlesEmptyText() {
|
|
let sentences = SentenceSegmenter.segment("")
|
|
#expect(sentences.isEmpty)
|
|
}
|
|
|
|
@Test func handlesSingleSentence() {
|
|
let text = "Just one sentence."
|
|
let sentences = SentenceSegmenter.segment(text)
|
|
#expect(sentences.count == 1)
|
|
#expect(sentences[0].text == "Just one sentence.")
|
|
}
|
|
}
|