Skip to content

Commit a4ff894

Browse files
Enhanced String Length Handling (#426)
1 parent 9d76dbe commit a4ff894

2 files changed

Lines changed: 7 additions & 1 deletion

File tree

core/src/main/java/org/projectnessie/cel/common/types/StringT.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ public Val receive(String function, String overload, Val... args) {
203203
/** Size implements traits.Sizer.Size. */
204204
@Override
205205
public Val size() {
206-
return intOf(s.length());
206+
return intOf(s.codePointCount(0, s.length()));
207207
}
208208

209209
/** Type implements ref.Val.Type. */

core/src/test/java/org/projectnessie/cel/common/types/StringTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,4 +217,10 @@ void stringSize() {
217217
assertThat(stringOf("hello world").size()).isEqualTo(intOf(11));
218218
assertThat(stringOf("\u65e5\u672c\u8a9e").size()).isEqualTo(intOf(3));
219219
}
220+
221+
@Test
222+
void stringSizeEmoji() {
223+
assertThat(stringOf("").size()).isSameAs(IntZero);
224+
assertThat(stringOf("\uD83D\uDE05\uD83D\uDE04\uD83D\uDC7E").size()).isEqualTo(intOf(3));
225+
}
220226
}

0 commit comments

Comments
 (0)