test(sidecar): pin pressKey keycode mapping and unknown-key rejection

This commit is contained in:
pj committed 2026-06-06 13:08:28 +05:30
1 parent 4b1832a8a4
commit 66f301562d
1 file changed
+23
@@ -2,10 +2,33 @@ package dev.sanderling.sidecar
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertFailsWith
import kotlin.test.assertTrue
class InputTextTest {
// A logical key name must map to the right Android keycode; a typo'd table
// entry would silently dispatch the wrong key (e.g. 'back' issuing HOME).
@Test fun pressKeyDispatchesMappedKeycode() {
val cases = mapOf(
"back" to "KEYCODE_BACK",
"enter" to "KEYCODE_ENTER",
"up" to "KEYCODE_DPAD_UP",
)
for ((key, keycode) in cases) {
val commands = mutableListOf<List<String>>()
StubDriverBackend("android") { commands.add(it) }.pressKey(key)
assertEquals(listOf(listOf("shell", "input", "keyevent", keycode)), commands, key)
}
}
@Test fun pressKeyRejectsUnknownKeyInsteadOfSilentlyDoingNothing() {
val commands = mutableListOf<List<String>>()
val backend = StubDriverBackend("android") { commands.add(it) }
assertFailsWith<IllegalArgumentException> { backend.pressKey("zorp") }
assertTrue(commands.isEmpty())
}
@Test fun inputTextTypesAtCursorWithoutClearing() {
val commands = mutableListOf<List<String>>()
val backend = StubDriverBackend("android") { commands.add(it) }