diff options
Diffstat (limited to 'app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java')
| -rw-r--r-- | app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java | 29 |
1 files changed, 28 insertions, 1 deletions
diff --git a/app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java b/app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java index 1890860..142bb34 100644 --- a/app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java +++ b/app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java @@ -16,6 +16,28 @@ public class ControlMessagesTest { } @Test + public void clipboardLimitsMatchScrcpyMessageSize() { + // The server caps a whole control message at MESSAGE_MAX_SIZE and + // derives each direction's text limit by subtracting that + // direction's header. Derive it the same way rather than copying + // the numbers, so a server bump shows up here as a failure. + final int messageMax = 1 << 18; // 256 KiB + assertEquals(messageMax - (1 + 8 + 1 + 4), // SET_CLIPBOARD + ControlMessages.MAX_CLIPBOARD_BYTES); + assertEquals(messageMax - (1 + 4), // DeviceMessage + ControlMessages.MAX_DEVICE_CLIPBOARD_BYTES); + } + + @Test + public void clipboardAcceptsExactlyTheLimit() { + char[] chars = new char[ControlMessages.MAX_CLIPBOARD_BYTES]; + java.util.Arrays.fill(chars, 'a'); // 1 byte per char in UTF-8 + byte[] m = ControlMessages.setClipboard(0, false, new String(chars)); + assertEquals(14 + ControlMessages.MAX_CLIPBOARD_BYTES, m.length); + assertEquals(ControlMessages.MAX_CLIPBOARD_BYTES, Wire.readBe32(m, 10)); + } + + @Test public void touchByteLayout() { // ACTION_DOWN=0, single finger, target 1080x2400, x=100, y=200, full pressure byte[] m = ControlMessages.touch(/* action */ 0, /* pointerId */ 0L, @@ -47,8 +69,13 @@ public class ControlMessagesTest { } @Test + public void resetVideoByteLayout() { + assertArrayEquals(new byte[]{17}, ControlMessages.resetVideo()); + } + + @Test public void setClipboardWithUtf8Payload() { - String text = "héllo 🎉"; // includes a 4-byte surrogate pair + String text = "héllo \ud83c\udf89"; // includes a 4-byte surrogate pair byte[] expected = text.getBytes(StandardCharsets.UTF_8); byte[] m = ControlMessages.setClipboard(0xdeadbeefcafeL, /* paste */ true, text); assertEquals(1 + 8 + 1 + 4 + expected.length, m.length); |