30 lines
992 B
Kotlin
30 lines
992 B
Kotlin
import kotlin.test.Test
|
|
import kotlin.test.assertEquals
|
|
import kotlin.test.assertTrue
|
|
|
|
class SearchScoringTest {
|
|
private fun rec(text: String, title: String = "Doc") = DocRecord("docs/a.md", title, norm(text))
|
|
|
|
@Test
|
|
fun zeroWhenNoTerms() {
|
|
assertEquals(0, scoreQueryAdvanced(emptyList(), rec("hello world")))
|
|
}
|
|
|
|
@Test
|
|
fun coverageMatters() {
|
|
val r = rec("alpha beta gamma alpha beta")
|
|
val s1 = scoreQueryAdvanced(listOf("alp"), r)
|
|
val s2 = scoreQueryAdvanced(listOf("alp", "bet"), r)
|
|
assertTrue(s2 > s1, "two-term coverage should score higher than one-term")
|
|
}
|
|
|
|
@Test
|
|
fun proximityImprovesScore() {
|
|
val near = rec("alpha beta gamma")
|
|
val far = rec(("alpha "+"x ").repeat(50) + "beta")
|
|
val sNear = scoreQueryAdvanced(listOf("alp", "bet"), near)
|
|
val sFar = scoreQueryAdvanced(listOf("alp", "bet"), far)
|
|
assertTrue(sNear > sFar, "closer terms should have higher score")
|
|
}
|
|
}
|