@Description("converts the string to lower case") @ScalarFunction @LiteralParameters("x") @SqlType("varchar(x)") public static Slice lower(@SqlType("varchar(x)") Slice slice) { return toLowerCase(slice); }
@Description("converts the string to lower case") @ScalarFunction @LiteralParameters("x") @SqlType("varchar(x)") public static Slice lower(@SqlType("varchar(x)") Slice slice) { return toLowerCase(slice); }
@Benchmark public Slice benchmarkToLowerCase(BenchmarkData data) { return toLowerCase(data.getSlice()); }
@Description("converts the string to lower case") @ScalarFunction @LiteralParameters("x") @SqlType("varchar(x)") public static Slice lower(@SqlType("varchar(x)") Slice slice) { return toLowerCase(slice); }
@Benchmark public Slice benchmarkToLowerCase(BenchmarkData data) { return toLowerCase(data.getSlice()); }
@Description("converts the string to lower case") @ScalarFunction @LiteralParameters("x") @SqlType("varchar(x)") public static Slice lower(@SqlType("varchar(x)") Slice slice) { return toLowerCase(slice); }
private static void assertCaseChange(String string) { String expectedLower = lowerByCodePoint(string); Slice actualLower = toLowerCase(utf8Slice(string)); assertEquals(actualLower, wrappedBuffer(expectedLower.getBytes(UTF_8))); String expectedUpper = upperByCodePoint(string); Slice actualUpper = toUpperCase(utf8Slice(string)); assertEquals(actualUpper, wrappedBuffer(expectedUpper.getBytes(UTF_8))); // lower the upper and upper the lower // NOTE: not all code points roundtrip, so calculate the expected assertEquals(toLowerCase(actualUpper), wrappedBuffer(lowerByCodePoint(expectedUpper).getBytes(UTF_8))); assertEquals(toUpperCase(actualLower), wrappedBuffer(upperByCodePoint(expectedLower).getBytes(UTF_8))); }
private static void assertCaseChange(String string) { String expectedLower = lowerByCodePoint(string); Slice actualLower = toLowerCase(utf8Slice(string)); assertEquals(actualLower, wrappedBuffer(expectedLower.getBytes(UTF_8))); String expectedUpper = upperByCodePoint(string); Slice actualUpper = toUpperCase(utf8Slice(string)); assertEquals(actualUpper, wrappedBuffer(expectedUpper.getBytes(UTF_8))); // lower the upper and upper the lower // NOTE: not all code points roundtrip, so calculate the expected assertEquals(toLowerCase(actualUpper), wrappedBuffer(lowerByCodePoint(expectedUpper).getBytes(UTF_8))); assertEquals(toUpperCase(actualLower), wrappedBuffer(upperByCodePoint(expectedLower).getBytes(UTF_8))); }
private static void assertCaseChangeWithInvalidSequence(byte[] invalidSequence) { assertEquals( toLowerCase(wrappedBuffer(invalidSequence)), wrappedBuffer(invalidSequence)); assertEquals( toUpperCase(wrappedBuffer(invalidSequence)), wrappedBuffer(invalidSequence)); assertEquals( toLowerCase(wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence))), wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence))); assertEquals( toUpperCase(wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence))), wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence))); assertEquals( toLowerCase(wrappedBuffer(concat(invalidSequence, new byte[] {'F', 'O', 'O'}))), wrappedBuffer(concat(invalidSequence, new byte[] {'f', 'o', 'o'}))); assertEquals( toUpperCase(wrappedBuffer(concat(invalidSequence, new byte[] {'f', 'o', 'o'}))), wrappedBuffer(concat(invalidSequence, new byte[] {'F', 'O', 'O'}))); assertEquals( toLowerCase(wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence, new byte[] {'B', 'A', 'R'}))), wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence, new byte[] {'b', 'a', 'r'}))); assertEquals( toUpperCase(wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence, new byte[] {'b', 'a', 'r'}))), wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence, new byte[] {'B', 'A', 'R'}))); }
private static void assertCaseChangeWithInvalidSequence(byte[] invalidSequence) { assertEquals( toLowerCase(wrappedBuffer(invalidSequence)), wrappedBuffer(invalidSequence)); assertEquals( toUpperCase(wrappedBuffer(invalidSequence)), wrappedBuffer(invalidSequence)); assertEquals( toLowerCase(wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence))), wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence))); assertEquals( toUpperCase(wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence))), wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence))); assertEquals( toLowerCase(wrappedBuffer(concat(invalidSequence, new byte[] {'F', 'O', 'O'}))), wrappedBuffer(concat(invalidSequence, new byte[] {'f', 'o', 'o'}))); assertEquals( toUpperCase(wrappedBuffer(concat(invalidSequence, new byte[] {'f', 'o', 'o'}))), wrappedBuffer(concat(invalidSequence, new byte[] {'F', 'O', 'O'}))); assertEquals( toLowerCase(wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence, new byte[] {'B', 'A', 'R'}))), wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence, new byte[] {'b', 'a', 'r'}))); assertEquals( toUpperCase(wrappedBuffer(concat(new byte[] {'f', 'o', 'o'}, invalidSequence, new byte[] {'b', 'a', 'r'}))), wrappedBuffer(concat(new byte[] {'F', 'O', 'O'}, invalidSequence, new byte[] {'B', 'A', 'R'}))); }
@Test public void testCaseChange() { assertCaseChange(STRING_ALL_CODE_POINTS); assertCaseChange(STRING_FAITH_HOPE_LOVE); assertCaseChange(STRING_HELLO); assertCaseChange(STRING_QUADRATICALLY); assertCaseChange(STRING_OESTERREICH); assertCaseChange(STRING_DULIOE_DULIOE); assertCaseChange(STRING_FAITH_HOPE_LOVE); assertCaseChange(STRING_NAIVE); assertCaseChange(STRING_OO); assertCaseChange(STRING_ASCII_CODE_POINTS); assertCaseChange(STRING_ALL_CODE_POINTS); assertCaseChange(STRING_ALL_CODE_POINTS_RANDOM); toLowerCase(Slices.wrappedBuffer(INVALID_SEQUENCE_TO_LOWER_EXPANDS)); INVALID_SEQUENCES.forEach(TestSliceUtf8::assertCaseChangeWithInvalidSequence); }
@Test public void testCaseChange() { assertCaseChange(STRING_ALL_CODE_POINTS); assertCaseChange(STRING_FAITH_HOPE_LOVE); assertCaseChange(STRING_HELLO); assertCaseChange(STRING_QUADRATICALLY); assertCaseChange(STRING_OESTERREICH); assertCaseChange(STRING_DULIOE_DULIOE); assertCaseChange(STRING_FAITH_HOPE_LOVE); assertCaseChange(STRING_NAIVE); assertCaseChange(STRING_OO); assertCaseChange(STRING_ASCII_CODE_POINTS); assertCaseChange(STRING_ALL_CODE_POINTS); assertCaseChange(STRING_ALL_CODE_POINTS_RANDOM); toLowerCase(Slices.wrappedBuffer(INVALID_SEQUENCE_TO_LOWER_EXPANDS)); INVALID_SEQUENCES.forEach(TestSliceUtf8::assertCaseChangeWithInvalidSequence); }