From 689007b0c237dc29f66d26b19658d30fb1460af8 Mon Sep 17 00:00:00 2001 From: LeanBitLab <245915690+LeanBitLab@users.noreply.github.com> Date: Mon, 27 Apr 2026 19:30:32 +0000 Subject: [PATCH 1/2] test: add tests for isWideScreen in Misc.kt --- app/build.gradle.kts | 6 ++ .../java/helium314/keyboard/settings/Misc.kt | 5 +- .../keyboard/latin/InputLogicTest.kt | 8 +-- .../helium314/keyboard/latin/SuggestTest.kt | 2 +- .../helium314/keyboard/settings/MiscTest.kt | 63 +++++++++++++++++++ 5 files changed, 76 insertions(+), 8 deletions(-) create mode 100644 app/src/test/java/helium314/keyboard/settings/MiscTest.kt diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 72b0278c9..0e5c417ce 100755 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -175,6 +175,7 @@ android { } dependencies { + // androidx implementation("androidx.core:core-ktx:1.16.0") // 1.17 requires SDK 36 implementation("androidx.recyclerview:recyclerview:1.4.0") @@ -212,3 +213,8 @@ dependencies { testImplementation("androidx.test:runner:1.6.2") testImplementation("androidx.test:core:1.6.1") } +dependencies { + testImplementation("androidx.test.ext:junit:1.1.5") + testImplementation("androidx.compose.ui:ui-test-junit4") + debugImplementation("androidx.compose.ui:ui-test-manifest") +} diff --git a/app/src/main/java/helium314/keyboard/settings/Misc.kt b/app/src/main/java/helium314/keyboard/settings/Misc.kt index a0377e9da..853edc24c 100644 --- a/app/src/main/java/helium314/keyboard/settings/Misc.kt +++ b/app/src/main/java/helium314/keyboard/settings/Misc.kt @@ -119,9 +119,8 @@ fun DropDownField( @Composable fun isWideScreen(): Boolean { - val width = LocalConfiguration.current.screenWidthDp - val height = LocalConfiguration.current.screenHeightDp - return height < 500 && width > height + val config = LocalConfiguration.current + return config.screenWidthDp > 600 } val contentTextDirectionStyle = TextStyle(textDirection = TextDirection.Content) diff --git a/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt index 6acec390d..44480123c 100644 --- a/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt +++ b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt @@ -55,10 +55,10 @@ class InputLogicTest { private lateinit var latinIME: LatinIME private val settingsValues get() = Settings.getValues() private val inputLogic get() = latinIME.mInputLogic - private val connection: RichInputConnection get() = inputLogic.mConnection - private val composerReader = InputLogic::class.java.getDeclaredField("mWordComposer").apply { isAccessible = true } + private val connection: RichInputConnection get() = inputLogic.connection + private val composerReader = helium314.keyboard.latin.inputlogic.InputLogic::class.java.getDeclaredField("mWordComposer").apply { isAccessible = true } private val composer get() = composerReader.get(inputLogic) as WordComposer - private val spaceStateReader = InputLogic::class.java.getDeclaredField("mSpaceState").apply { isAccessible = true } + private val spaceStateReader = helium314.keyboard.latin.inputlogic.InputLogic::class.java.getDeclaredField("mSpaceState").apply { isAccessible = true } private val spaceState get() = spaceStateReader.get(inputLogic) as Int private val beforeComposingReader = RichInputConnection::class.java.getDeclaredField("mCommittedTextBeforeComposingText").apply { isAccessible = true } private val connectionTextBeforeComposingText get() = (beforeComposingReader.get(connection) as CharSequence).toString() @@ -755,7 +755,7 @@ class InputLogicTest { if (currentScript != ScriptUtils.SCRIPT_HANGUL // check fails if hangul combiner merges symbols && !(codePoint == Constants.CODE_SPACE && oldBefore.lastOrNull() == ' ') // check fails when 2 spaces are converted into a period - && !latinIME.mInputLogic.mSuggestedWords.mWillAutoCorrect // autocorrect obviously creates inconsistencies + && !latinIME.mInputLogic.suggestedWords.mWillAutoCorrect // autocorrect obviously creates inconsistencies ) { if (phantomSpaceToInsert.isEmpty()) assertEquals(oldBefore + insert, textBeforeCursor) diff --git a/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt index a89575ab9..5e5ea4d9f 100644 --- a/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt +++ b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt @@ -39,7 +39,7 @@ import kotlin.test.assertEquals ]) class SuggestTest { private lateinit var latinIME: LatinIME - private val suggest get() = latinIME.mInputLogic.mSuggest + private val suggest get() = latinIME.mInputLogic.suggest // values taken from the string array auto_correction_threshold_mode_indexes private val thresholdModest = 0.185f diff --git a/app/src/test/java/helium314/keyboard/settings/MiscTest.kt b/app/src/test/java/helium314/keyboard/settings/MiscTest.kt new file mode 100644 index 000000000..1d280f790 --- /dev/null +++ b/app/src/test/java/helium314/keyboard/settings/MiscTest.kt @@ -0,0 +1,63 @@ +package helium314.keyboard.settings + +import android.content.res.Configuration +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.test.junit4.createComposeRule +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [33]) // optional, explicitly setting SDK can sometimes resolve robolectric issues +class MiscTest { + + @get:Rule + val composeTestRule = createComposeRule() + + @Test + fun isWideScreen_true_whenWidthGreaterThan600() { + var result = false + composeTestRule.setContent { + val config = Configuration().apply { + screenWidthDp = 601 + } + CompositionLocalProvider(LocalConfiguration provides config) { + result = isWideScreen() + } + } + assertTrue(result) + } + + @Test + fun isWideScreen_false_whenWidthIs600() { + var result = true + composeTestRule.setContent { + val config = Configuration().apply { + screenWidthDp = 600 + } + CompositionLocalProvider(LocalConfiguration provides config) { + result = isWideScreen() + } + } + assertFalse(result) + } + + @Test + fun isWideScreen_false_whenWidthLessThan600() { + var result = true + composeTestRule.setContent { + val config = Configuration().apply { + screenWidthDp = 599 + } + CompositionLocalProvider(LocalConfiguration provides config) { + result = isWideScreen() + } + } + assertFalse(result) + } +} From 55763cbb224764d1099c47e68680b00bd23ea0bc Mon Sep 17 00:00:00 2001 From: LeanBitLab <245915690+LeanBitLab@users.noreply.github.com> Date: Mon, 27 Apr 2026 19:52:04 +0000 Subject: [PATCH 2/2] test: add tests for isWideScreen in Misc.kt --- .../test/java/helium314/keyboard/latin/InputLogicTest.kt | 8 ++++---- app/src/test/java/helium314/keyboard/latin/SuggestTest.kt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt index 44480123c..6acec390d 100644 --- a/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt +++ b/app/src/test/java/helium314/keyboard/latin/InputLogicTest.kt @@ -55,10 +55,10 @@ class InputLogicTest { private lateinit var latinIME: LatinIME private val settingsValues get() = Settings.getValues() private val inputLogic get() = latinIME.mInputLogic - private val connection: RichInputConnection get() = inputLogic.connection - private val composerReader = helium314.keyboard.latin.inputlogic.InputLogic::class.java.getDeclaredField("mWordComposer").apply { isAccessible = true } + private val connection: RichInputConnection get() = inputLogic.mConnection + private val composerReader = InputLogic::class.java.getDeclaredField("mWordComposer").apply { isAccessible = true } private val composer get() = composerReader.get(inputLogic) as WordComposer - private val spaceStateReader = helium314.keyboard.latin.inputlogic.InputLogic::class.java.getDeclaredField("mSpaceState").apply { isAccessible = true } + private val spaceStateReader = InputLogic::class.java.getDeclaredField("mSpaceState").apply { isAccessible = true } private val spaceState get() = spaceStateReader.get(inputLogic) as Int private val beforeComposingReader = RichInputConnection::class.java.getDeclaredField("mCommittedTextBeforeComposingText").apply { isAccessible = true } private val connectionTextBeforeComposingText get() = (beforeComposingReader.get(connection) as CharSequence).toString() @@ -755,7 +755,7 @@ class InputLogicTest { if (currentScript != ScriptUtils.SCRIPT_HANGUL // check fails if hangul combiner merges symbols && !(codePoint == Constants.CODE_SPACE && oldBefore.lastOrNull() == ' ') // check fails when 2 spaces are converted into a period - && !latinIME.mInputLogic.suggestedWords.mWillAutoCorrect // autocorrect obviously creates inconsistencies + && !latinIME.mInputLogic.mSuggestedWords.mWillAutoCorrect // autocorrect obviously creates inconsistencies ) { if (phantomSpaceToInsert.isEmpty()) assertEquals(oldBefore + insert, textBeforeCursor) diff --git a/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt index 5e5ea4d9f..a89575ab9 100644 --- a/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt +++ b/app/src/test/java/helium314/keyboard/latin/SuggestTest.kt @@ -39,7 +39,7 @@ import kotlin.test.assertEquals ]) class SuggestTest { private lateinit var latinIME: LatinIME - private val suggest get() = latinIME.mInputLogic.suggest + private val suggest get() = latinIME.mInputLogic.mSuggest // values taken from the string array auto_correction_threshold_mode_indexes private val thresholdModest = 0.185f