From 66f301562dae8aab42fd6569f25d286c7e892f4e Mon Sep 17 00:00:00 2001 From: PJ Date: Sat, 6 Jun 2026 12:51:30 +0530 Subject: [PATCH] test(sidecar): pin pressKey keycode mapping and unknown-key rejection --- .../dev/sanderling/sidecar/InputTextTest.kt | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt b/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt index 55f928c..36eb3c9 100644 --- a/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt +++ b/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt @@ -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>() + StubDriverBackend("android") { commands.add(it) }.pressKey(key) + assertEquals(listOf(listOf("shell", "input", "keyevent", keycode)), commands, key) + } + } + + @Test fun pressKeyRejectsUnknownKeyInsteadOfSilentlyDoingNothing() { + val commands = mutableListOf>() + val backend = StubDriverBackend("android") { commands.add(it) } + assertFailsWith { backend.pressKey("zorp") } + assertTrue(commands.isEmpty()) + } + @Test fun inputTextTypesAtCursorWithoutClearing() { val commands = mutableListOf>() val backend = StubDriverBackend("android") { commands.add(it) }