|
35 | 35 | import static java.nio.charset.StandardCharsets.UTF_8; |
36 | 36 | import static org.apache.paimon.data.BinaryString.EMPTY_UTF8; |
37 | 37 | import static org.apache.paimon.data.BinaryString.blankString; |
| 38 | +import static org.apache.paimon.data.BinaryString.concat; |
| 39 | +import static org.apache.paimon.data.BinaryString.concatWs; |
38 | 40 | import static org.apache.paimon.data.BinaryString.fromBytes; |
39 | 41 | import static org.apache.paimon.utils.DecimalUtils.castFrom; |
40 | 42 | import static org.assertj.core.api.Assertions.assertThat; |
@@ -221,6 +223,42 @@ public void testMultiSegments() { |
221 | 223 | assertThat(binaryString2.compareTo(binaryString1)).isEqualTo(1); |
222 | 224 | } |
223 | 225 |
|
| 226 | + @TestTemplate |
| 227 | + void concatTest() { |
| 228 | + assertThat(concat()).isEqualTo(EMPTY_UTF8); |
| 229 | + assertThat(concat((BinaryString) null)).isNull(); |
| 230 | + assertThat(concat(EMPTY_UTF8)).isEqualTo(EMPTY_UTF8); |
| 231 | + assertThat(concat(fromString("ab"))).isEqualTo(fromString("ab")); |
| 232 | + assertThat(concat(fromString("a"), fromString("b"))).isEqualTo(fromString("ab")); |
| 233 | + assertThat(concat(fromString("a"), fromString("b"), fromString("c"))) |
| 234 | + .isEqualTo(fromString("abc")); |
| 235 | + assertThat(concat(fromString("a"), null, fromString("c"))).isNull(); |
| 236 | + assertThat(concat(fromString("a"), null, null)).isNull(); |
| 237 | + assertThat(concat(null, null, null)).isNull(); |
| 238 | + assertThat(concat(fromString("数据"), fromString("砖头"))).isEqualTo(fromString("数据砖头")); |
| 239 | + } |
| 240 | + |
| 241 | + @TestTemplate |
| 242 | + void concatWsTest() { |
| 243 | + // Returns empty if the separator is null |
| 244 | + assertThat(concatWs(null, (BinaryString) null)).isNull(); |
| 245 | + assertThat(concatWs(null, fromString("a"))).isNull(); |
| 246 | + |
| 247 | + // If separator is null, concatWs should skip all null inputs and never return null. |
| 248 | + BinaryString sep = fromString("哈哈"); |
| 249 | + assertThat(concatWs(sep, EMPTY_UTF8)).isEqualTo(EMPTY_UTF8); |
| 250 | + assertThat(concatWs(sep, fromString("ab"))).isEqualTo(fromString("ab")); |
| 251 | + assertThat(concatWs(sep, fromString("a"), fromString("b"))).isEqualTo(fromString("a哈哈b")); |
| 252 | + assertThat(concatWs(sep, fromString("a"), fromString("b"), fromString("c"))) |
| 253 | + .isEqualTo(fromString("a哈哈b哈哈c")); |
| 254 | + assertThat(concatWs(sep, fromString("a"), null, fromString("c"))) |
| 255 | + .isEqualTo(fromString("a哈哈c")); |
| 256 | + assertThat(concatWs(sep, fromString("a"), null, null)).isEqualTo(fromString("a")); |
| 257 | + assertThat(concatWs(sep, null, null, null)).isEqualTo(EMPTY_UTF8); |
| 258 | + assertThat(concatWs(sep, fromString("数据"), fromString("砖头"))) |
| 259 | + .isEqualTo(fromString("数据哈哈砖头")); |
| 260 | + } |
| 261 | + |
224 | 262 | @TestTemplate |
225 | 263 | public void contains() { |
226 | 264 | assertThat(EMPTY_UTF8.contains(EMPTY_UTF8)).isTrue(); |
|
0 commit comments