From 0187beeae5d260fd2826aab4772eb2b3e149fa25 Mon Sep 17 00:00:00 2001 From: Helium314 Date: Mon, 20 Nov 2023 00:48:26 +0100 Subject: [PATCH] add test & fix for another url detection auto-space issue --- app/build.gradle | 2 +- .../inputmethod/latin/common/StringUtils.kt | 3 ++- .../openboard/inputmethod/latin/InputLogicTest.kt | 12 +++++++++++- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 62d026360..58f5b82d7 100755 --- a/app/build.gradle +++ b/app/build.gradle @@ -85,7 +85,7 @@ dependencies { testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:3.12.4' testImplementation 'org.mockito:mockito-inline:3.12.4' - testImplementation 'org.robolectric:robolectric:4.10.3' + testImplementation 'org.robolectric:robolectric:4.11.1' testImplementation 'androidx.test:runner:1.5.2' testImplementation 'androidx.test:core:1.5.0' } diff --git a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt index bc22f9f67..4c4ad5ef7 100644 --- a/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt +++ b/app/src/main/java/org/dslul/openboard/inputmethod/latin/common/StringUtils.kt @@ -32,7 +32,8 @@ fun nonWordCodePointAndNoSpaceBeforeCursor(s: CharSequence, spacingAndPunctuatio loopOverCodePointsBackwards(s) { if (!space && Character.isWhitespace(it)) space = true - if (!nonWordCodePoint && !spacingAndPunctuations.isWordCodePoint(it)) + // treat double quote like a word codepoint for the purpose of this function (not great, maybe clarify name, or extend list of chars?) + if (!nonWordCodePoint && !spacingAndPunctuations.isWordCodePoint(it) && it != '"'.code) nonWordCodePoint = true space && nonWordCodePoint // stop if both are found } diff --git a/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt b/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt index e74ffc63f..d79e4fae6 100644 --- a/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt +++ b/app/src/test/java/org/dslul/openboard/inputmethod/latin/InputLogicTest.kt @@ -44,7 +44,7 @@ import kotlin.math.min ShadowKeyboardSwitcher::class, ShadowHandler::class, ShadowFacilitator2::class, -], sdk = [33]) // todo: remove workaround after upgrading robolectric to 4.11 +]) class InputLogicTest { private lateinit var latinIME: LatinIME private val settingsValues get() = Settings.getInstance().current @@ -523,6 +523,16 @@ class InputLogicTest { assertEquals("h", composingText) } + @Test fun `autospace works in URL field when starting with quotes`() { + reset() + DeviceProtectedUtils.getSharedPreferences(latinIME).edit { putBoolean(Settings.PREF_URL_DETECTION, true) } + setInputType(InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_VARIATION_URI) + input("\"") + pickSuggestion("this") + input("i") + assertEquals("\"this i", text) + } + // ------- helper functions --------- // should be called before every test, so the same state is guaranteed