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/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) + } +}