diff --git a/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt b/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt new file mode 100644 index 0000000..a9b2409 --- /dev/null +++ b/sidecar/src/test/kotlin/dev/sanderling/sidecar/InputTextTest.kt @@ -0,0 +1,38 @@ +package dev.sanderling.sidecar + +import org.junit.Test +import kotlin.test.assertEquals +import kotlin.test.assertTrue + +class InputTextTest { + + @Test fun inputTextTypesAtCursorWithoutClearing() { + val commands = mutableListOf>() + val backend = StubDriverBackend("android") { commands.add(it) } + + backend.inputText("Emergency Fund") + + assertEquals(listOf(listOf("shell", "input", "text", "Emergency%sFund")), commands) + } + + @Test fun escapeForAdbInputTextSubstitutesSpaces() { + assertEquals("hello%sworld", StubDriverBackend.escapeForAdbInputText("hello world")) + } + + @Test fun escapeForAdbInputTextEscapesShellMetacharacters() { + val escaped = StubDriverBackend.escapeForAdbInputText("a&b|c;d\$e`f") + assertEquals("a\\&b\\|c\\;d\\\$e\\`f", escaped) + } + + @Test fun escapeForAdbInputTextEscapesQuotesAndBackslash() { + assertEquals("\\'", StubDriverBackend.escapeForAdbInputText("'")) + assertEquals("\\\"", StubDriverBackend.escapeForAdbInputText("\"")) + assertEquals("\\\\", StubDriverBackend.escapeForAdbInputText("\\")) + } + + @Test fun escapeForAdbInputTextLeavesSimpleTextAlone() { + assertEquals("12.34", StubDriverBackend.escapeForAdbInputText("12.34")) + assertEquals("Coffee", StubDriverBackend.escapeForAdbInputText("Coffee")) + assertTrue("-5" == StubDriverBackend.escapeForAdbInputText("-5")) + } +}