mirror of
https://github.com/f-droid/fdroidclient.git
synced 2026-10-03 01:26:34 -04:00
[db] Add SearchQueryRewriter and use it in AppSearchItemsTest
This code comes from SearchManager, but making it available in the DB library makes sense since the queries are specific to the DB implementation such as zero-whitespace hack.
This commit is contained in:
3 files changed
+139
-27
No files matched your search
@@ -0,0 +1,54 @@
|
||||
package org.fdroid.database
|
||||
|
||||
import kotlin.test.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
internal class SearchQueryRewriterTest {
|
||||
|
||||
@Test
|
||||
fun rewritesBlankQueryToBlank() {
|
||||
assertEquals("", SearchQueryRewriter.rewriteQuery(" "))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesSingleLatinWordToPrefixQuery() {
|
||||
assertEquals("foo*", SearchQueryRewriter.rewriteQuery("foo"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesMultipleLatinWordsWithCamelCaseAndPhrase() {
|
||||
assertEquals(
|
||||
"foo* bar* OR foobar* OR \"foo* bar*\"",
|
||||
SearchQueryRewriter.rewriteQuery("foo bar"),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesMultipleLatinWordsAndIgnoresExtraWhitespace() {
|
||||
assertEquals(
|
||||
"foo* bar* OR foobar* OR \"foo* bar*\"",
|
||||
SearchQueryRewriter.rewriteQuery(" foo bar "),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesSingleCjkWordWithZeroWidthAndVerbatimAlternatives() {
|
||||
assertEquals("測* 試* OR \"測\u200B試*\" OR 測試*", SearchQueryRewriter.rewriteQuery("測試"))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesMultiWordCjkQuery() {
|
||||
assertEquals(
|
||||
"測* 試* 艾* 星* OR \"測\u200B試*\" \"艾\u200B星*\" OR 測試* 艾星*",
|
||||
SearchQueryRewriter.rewriteQuery("測試 艾星"),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun rewritesMixedLatinAndCjkWordsUsingCjkBranch() {
|
||||
assertEquals(
|
||||
"foo* 測* 試* OR \"foo*\" \"測\u200B試*\" OR foo* 測試*",
|
||||
SearchQueryRewriter.rewriteQuery("foo 測試"),
|
||||
)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user