mirror of
https://github.com/Helium314/HeliBoard.git
synced 2025-04-22 23:29:10 +00:00
add some tests for subtype enablement
This commit is contained in:
parent
a4d96a12a9
commit
e1f02dab31
1 changed files with 75 additions and 0 deletions
75
app/src/test/java/helium314/keyboard/SubtypeTest.kt
Normal file
75
app/src/test/java/helium314/keyboard/SubtypeTest.kt
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
package helium314.keyboard
|
||||||
|
|
||||||
|
import helium314.keyboard.keyboard.KeyboardId
|
||||||
|
import helium314.keyboard.keyboard.KeyboardLayoutSet
|
||||||
|
import helium314.keyboard.keyboard.internal.KeyboardParams
|
||||||
|
import helium314.keyboard.keyboard.internal.keyboard_parser.POPUP_KEYS_NORMAL
|
||||||
|
import helium314.keyboard.keyboard.internal.keyboard_parser.addLocaleKeyTextsToParams
|
||||||
|
import helium314.keyboard.latin.LatinIME
|
||||||
|
import helium314.keyboard.latin.common.LocaleUtils.constructLocale
|
||||||
|
import helium314.keyboard.latin.settings.Settings
|
||||||
|
import helium314.keyboard.latin.settings.SettingsSubtype.Companion.toSettingsSubtype
|
||||||
|
import helium314.keyboard.latin.utils.LayoutType
|
||||||
|
import helium314.keyboard.latin.utils.POPUP_KEYS_LAYOUT
|
||||||
|
import helium314.keyboard.latin.utils.SubtypeSettings
|
||||||
|
import helium314.keyboard.latin.utils.SubtypeUtilsAdditional
|
||||||
|
import helium314.keyboard.latin.utils.prefs
|
||||||
|
import org.junit.runner.RunWith
|
||||||
|
import org.robolectric.Robolectric
|
||||||
|
import org.robolectric.RobolectricTestRunner
|
||||||
|
import org.robolectric.annotation.Config
|
||||||
|
import org.robolectric.shadows.ShadowLog
|
||||||
|
import kotlin.test.BeforeTest
|
||||||
|
import kotlin.test.Test
|
||||||
|
import kotlin.test.assertEquals
|
||||||
|
import kotlin.test.assertTrue
|
||||||
|
|
||||||
|
@RunWith(RobolectricTestRunner::class)
|
||||||
|
@Config(shadows = [
|
||||||
|
ShadowInputMethodManager2::class
|
||||||
|
])
|
||||||
|
class SubtypeTest {
|
||||||
|
private lateinit var latinIME: LatinIME
|
||||||
|
private lateinit var params: KeyboardParams
|
||||||
|
|
||||||
|
@BeforeTest fun setUp() {
|
||||||
|
latinIME = Robolectric.setupService(LatinIME::class.java)
|
||||||
|
ShadowLog.setupLogging()
|
||||||
|
ShadowLog.stream = System.out
|
||||||
|
params = KeyboardParams()
|
||||||
|
params.mId = KeyboardLayoutSet.getFakeKeyboardId(KeyboardId.ELEMENT_ALPHABET)
|
||||||
|
params.mPopupKeyTypes.add(POPUP_KEYS_LAYOUT)
|
||||||
|
addLocaleKeyTextsToParams(latinIME, params, POPUP_KEYS_NORMAL)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun emptyAdditionalSubtypesResultsInEmptyList() {
|
||||||
|
// avoid issues where empty string results in additional subtype for undefined locale
|
||||||
|
val prefs = latinIME.prefs()
|
||||||
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, "").apply()
|
||||||
|
assertTrue(SubtypeSettings.getAdditionalSubtypes().isEmpty())
|
||||||
|
val from = SubtypeSettings.getResourceSubtypesForLocale("es".constructLocale()).first()
|
||||||
|
|
||||||
|
// no change, and "changed" subtype actually is resource subtype -> still expect empty list
|
||||||
|
SubtypeUtilsAdditional.changeAdditionalSubtype(from.toSettingsSubtype(), from.toSettingsSubtype(), latinIME)
|
||||||
|
assertEquals(emptyList(), SubtypeSettings.getAdditionalSubtypes().map { it.toSettingsSubtype() })
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test fun subtypeStaysEnabledOnEdits() {
|
||||||
|
val prefs = latinIME.prefs()
|
||||||
|
prefs.edit().putString(Settings.PREF_ADDITIONAL_SUBTYPES, "").apply() // clear it for convenience
|
||||||
|
|
||||||
|
// edit enabled resource subtype
|
||||||
|
val from = SubtypeSettings.getResourceSubtypesForLocale("es".constructLocale()).first()
|
||||||
|
SubtypeSettings.addEnabledSubtype(prefs, from)
|
||||||
|
val to = from.toSettingsSubtype().withLayout(LayoutType.SYMBOLS, "symbols_arabic")
|
||||||
|
SubtypeUtilsAdditional.changeAdditionalSubtype(from.toSettingsSubtype(), to, latinIME)
|
||||||
|
assertEquals(to, SubtypeSettings.getEnabledSubtypes(false).single().toSettingsSubtype())
|
||||||
|
|
||||||
|
// change the new subtype to effectively be the same as original resource subtype
|
||||||
|
val toNew = to.withoutLayout(LayoutType.SYMBOLS)
|
||||||
|
assertEquals(from.toSettingsSubtype(), toNew)
|
||||||
|
SubtypeUtilsAdditional.changeAdditionalSubtype(to, toNew, latinIME)
|
||||||
|
assertEquals(emptyList(), SubtypeSettings.getAdditionalSubtypes().map { it.toSettingsSubtype() })
|
||||||
|
assertEquals(from.toSettingsSubtype(), SubtypeSettings.getEnabledSubtypes(false).single().toSettingsSubtype())
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue