aboutsummaryrefslogtreecommitdiff
path: root/app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java')
-rw-r--r--app/src/test/java/invalid/lena/scrcpy/ControlMessagesTest.java29
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);