There are a lot of "magic numbers" that we really don't want to extract as a constant. Until now, many @SuppressWarnings annotations were added, but it makes no sense to check for magic number if we silent the warnings everywhere.
43 lines
1.2 KiB
Java
43 lines
1.2 KiB
Java
package com.genymobile.scrcpy;
|
|
|
|
import org.junit.Assert;
|
|
import org.junit.Test;
|
|
|
|
import java.nio.charset.StandardCharsets;
|
|
|
|
public class StringUtilsTest {
|
|
|
|
@Test
|
|
public void testUtf8Truncate() {
|
|
String s = "aÉbÔc";
|
|
byte[] utf8 = s.getBytes(StandardCharsets.UTF_8);
|
|
Assert.assertEquals(7, utf8.length);
|
|
|
|
int count;
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 1);
|
|
Assert.assertEquals(1, count);
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 2);
|
|
Assert.assertEquals(1, count); // É is 2 bytes-wide
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 3);
|
|
Assert.assertEquals(3, count);
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 4);
|
|
Assert.assertEquals(4, count);
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 5);
|
|
Assert.assertEquals(4, count); // Ô is 2 bytes-wide
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 6);
|
|
Assert.assertEquals(6, count);
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 7);
|
|
Assert.assertEquals(7, count);
|
|
|
|
count = StringUtils.getUtf8TruncationIndex(utf8, 8);
|
|
Assert.assertEquals(7, count); // no more chars
|
|
}
|
|
}
|