private static Slice codePointsToSliceUtf8(List<Integer> codePoints) { int length = codePoints.stream() .mapToInt(SliceUtf8::lengthOfCodePoint) .sum(); Slice result = Slices.wrappedBuffer(new byte[length]); int offset = 0; for (int codePoint : codePoints) { setCodePointAt(codePoint, result, offset); offset += lengthOfCodePoint(codePoint); } return result; } }
private static Slice codePointsToSliceUtf8(List<Integer> codePoints) { int length = codePoints.stream() .mapToInt(SliceUtf8::lengthOfCodePoint) .sum(); Slice result = Slices.wrappedBuffer(new byte[length]); int offset = 0; for (int codePoint : codePoints) { setCodePointAt(codePoint, result, offset); offset += lengthOfCodePoint(codePoint); } return result; } }
private static Slice codePointsToSliceUtf8(List<Integer> codePoints) { int length = codePoints.stream() .mapToInt(SliceUtf8::lengthOfCodePoint) .sum(); Slice result = Slices.wrappedBuffer(new byte[length]); int offset = 0; for (int codePoint : codePoints) { setCodePointAt(codePoint, result, offset); offset += lengthOfCodePoint(codePoint); } return result; } }
/** * Convert the code point to UTF-8. * <p> * * @throws InvalidCodePointException if code point is not within a valid range */ public static Slice codePointToUtf8(int codePoint) { Slice utf8 = Slices.allocate(lengthOfCodePoint(codePoint)); setCodePointAt(codePoint, utf8, 0); return utf8; }
/** * Convert the code point to UTF-8. * <p> * * @throws InvalidCodePointException if code point is not within a valid range */ public static Slice codePointToUtf8(int codePoint) { Slice utf8 = Slices.allocate(lengthOfCodePoint(codePoint)); setCodePointAt(codePoint, utf8, 0); return utf8; }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xD800") public void testSetSurrogateCodePoint() { setCodePointAt(MIN_SURROGATE, Slices.allocate(8), 0); }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xD800") public void testSetSurrogateCodePoint() { setCodePointAt(MIN_SURROGATE, Slices.allocate(8), 0); }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xFFFFFFBF") public void testSetCodePointContinuationByte() { setCodePointAt(CONTINUATION_BYTE, Slices.allocate(8), 0); } }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0x110000") public void testSetOutOfRangeCodePoint() { setCodePointAt(MAX_CODE_POINT + 1, Slices.allocate(8), 0); }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xFFFFFFBF") public void testSetCodePointContinuationByte() { setCodePointAt(CONTINUATION_BYTE, Slices.allocate(8), 0); } }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0x110000") public void testSetOutOfRangeCodePoint() { setCodePointAt(MAX_CODE_POINT + 1, Slices.allocate(8), 0); }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xFFFFFFFF") public void testSetNegativeCodePoint() { setCodePointAt(-1, Slices.allocate(8), 0); }
@Test(expectedExceptions = InvalidCodePointException.class, expectedExceptionsMessageRegExp = "Invalid code point 0xFFFFFFFF") public void testSetNegativeCodePoint() { setCodePointAt(-1, Slices.allocate(8), 0); }
utf8Position += setCodePointAt(codePoint, utf8, utf8Position);
utf8Position += setCodePointAt(codePoint, utf8, utf8Position);
setCodePointAt(upperCodePoint, newUtf8, upperPosition);
setCodePointAt(upperCodePoint, newUtf8, upperPosition);