@Test public void testCompareUtf16BECodePoint() { for (int leftCodePoint : UTF_16_TESTING_CODE_POINTS) { String leftString = new String(Character.toChars(leftCodePoint)); // try the UTF-16 code points at the boundaries for (int rightCodePoint : UTF_16_TESTING_CODE_POINTS) { String rightString = new String(Character.toChars(rightCodePoint)); int expected = signum(leftString.compareTo(rightString)); int actual = compareUtf16BE(leftCodePoint, rightCodePoint); assertEquals(actual, expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); actual = compareUtf16BE(rightCodePoint, leftCodePoint); assertEquals(actual, -expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); } } }
@Test public void testCompareUtf16BECodePoint() { for (int leftCodePoint : UTF_16_TESTING_CODE_POINTS) { String leftString = new String(Character.toChars(leftCodePoint)); // try the UTF-16 code points at the boundaries for (int rightCodePoint : UTF_16_TESTING_CODE_POINTS) { String rightString = new String(Character.toChars(rightCodePoint)); int expected = signum(leftString.compareTo(rightString)); int actual = compareUtf16BE(leftCodePoint, rightCodePoint); assertEquals(actual, expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); actual = compareUtf16BE(rightCodePoint, leftCodePoint); assertEquals(actual, -expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); } } }
private static void testCompareUtf16BESequence(String prefix) { for (String leftSuffix : ImmutableList.of("", "a", "\uD801\uDC2D")) { for (String rightSuffix : ImmutableList.of("", "a", "\uD801\uDC2D")) { for (int leftCodePoint : UTF_16_BOUNDARY_CODE_POINTS) { String leftString = prefix + new String(Character.toChars(leftCodePoint)) + leftSuffix; Slice leftSlice = utf8Slice(leftString); // try the UTF-16 code points at the boundaries for (int rightCodePoint : UTF_16_BOUNDARY_CODE_POINTS) { String rightString = prefix + new String(Character.toChars(rightCodePoint)) + rightSuffix; Slice rightSlice = utf8Slice(rightString); int expected = signum(leftString.compareTo(rightString)); int actual = compareUtf16BE(leftSlice, rightSlice); assertEquals(actual, expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); actual = compareUtf16BE(rightSlice, leftSlice); assertEquals(actual, -expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); } } } } }
private static void testCompareUtf16BESequence(String prefix) { for (String leftSuffix : ImmutableList.of("", "a", "\uD801\uDC2D")) { for (String rightSuffix : ImmutableList.of("", "a", "\uD801\uDC2D")) { for (int leftCodePoint : UTF_16_BOUNDARY_CODE_POINTS) { String leftString = prefix + new String(Character.toChars(leftCodePoint)) + leftSuffix; Slice leftSlice = utf8Slice(leftString); // try the UTF-16 code points at the boundaries for (int rightCodePoint : UTF_16_BOUNDARY_CODE_POINTS) { String rightString = prefix + new String(Character.toChars(rightCodePoint)) + rightSuffix; Slice rightSlice = utf8Slice(rightString); int expected = signum(leftString.compareTo(rightString)); int actual = compareUtf16BE(leftSlice, rightSlice); assertEquals(actual, expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); actual = compareUtf16BE(rightSlice, leftSlice); assertEquals(actual, -expected, String.format("left: 0x%x right: 0x%x", leftCodePoint, rightCodePoint)); } } } } }
@Test public void testCompareUtf16BEIllegalSequences() { for (byte[] invalidSequence : INVALID_SEQUENCES) { Slice leftSlice = new Slice(concat(new byte[] {'F', 'O', 'O'}, invalidSequence)); Slice rightSlice = new Slice(new byte[] {'F', 'O', 'O', 'B', 'a', 'r'}); try { compareUtf16BE(leftSlice, rightSlice); fail("Expected exception for invalid UTF-8"); } catch (InvalidUtf8Exception e) { } try { compareUtf16BE(rightSlice, leftSlice); fail("Expected exception for invalid UTF-8"); } catch (InvalidUtf8Exception e) { } } }
@Test public void testCompareUtf16BEIllegalSequences() { for (byte[] invalidSequence : INVALID_SEQUENCES) { Slice leftSlice = new Slice(concat(new byte[] {'F', 'O', 'O'}, invalidSequence)); Slice rightSlice = new Slice(new byte[] {'F', 'O', 'O', 'B', 'a', 'r'}); try { compareUtf16BE(leftSlice, rightSlice); fail("Expected exception for invalid UTF-8"); } catch (InvalidUtf8Exception e) { } try { compareUtf16BE(rightSlice, leftSlice); fail("Expected exception for invalid UTF-8"); } catch (InvalidUtf8Exception e) { } } }
int result = compareUtf16BE(leftCodePoint, rightCodePoint); if (result != 0) { return result;
int result = compareUtf16BE(leftCodePoint, rightCodePoint); if (result != 0) { return result;