@@ -29,4 +29,74 @@ class CodePointSequenceTest {
2929 iterator.next()
3030 }
3131 }
32+
33+ @Test
34+ fun codePointIterator_with_start_index () {
35+ val iterator = " a\uD83E\uDD95 b" .codePointIterator(startIndex = 1 )
36+
37+ assertTrue(iterator.hasNext())
38+ assertEquals(" \uD83E\uDD95 " .codePointAt(0 ), iterator.next())
39+ assertTrue(iterator.hasNext())
40+ assertEquals(' b' .toCodePoint(), iterator.next())
41+ assertFalse(iterator.hasNext())
42+ assertFailsWith<IndexOutOfBoundsException > {
43+ iterator.next()
44+ }
45+ }
46+
47+ @Test
48+ fun codePointIterator_with_end_index () {
49+ val iterator = " a\uD83E\uDD95 b" .codePointIterator(endIndex = 3 )
50+
51+ assertTrue(iterator.hasNext())
52+ assertEquals(' a' .toCodePoint(), iterator.next())
53+ assertTrue(iterator.hasNext())
54+ assertEquals(" \uD83E\uDD95 " .codePointAt(0 ), iterator.next())
55+ assertFalse(iterator.hasNext())
56+ assertFailsWith<IndexOutOfBoundsException > {
57+ iterator.next()
58+ }
59+ }
60+
61+ @Test
62+ fun codePointIterator_with_start_and_end_index () {
63+ val iterator = " ab\uD83E\uDD95 c" .codePointIterator(startIndex = 1 , endIndex = 4 )
64+
65+ assertTrue(iterator.hasNext())
66+ assertEquals(' b' .toCodePoint(), iterator.next())
67+ assertTrue(iterator.hasNext())
68+ assertEquals(" \uD83E\uDD95 " .codePointAt(0 ), iterator.next())
69+ assertFalse(iterator.hasNext())
70+ assertFailsWith<IndexOutOfBoundsException > {
71+ iterator.next()
72+ }
73+ }
74+
75+ @Test
76+ fun codePointIterator_with_start_index_inside_surrogate_pair () {
77+ val iterator = " a\uD83E\uDD95 b" .codePointIterator(startIndex = 2 )
78+
79+ assertTrue(iterator.hasNext())
80+ assertEquals(' \uDD95 ' .toCodePoint(), iterator.next())
81+ assertTrue(iterator.hasNext())
82+ assertEquals(' b' .toCodePoint(), iterator.next())
83+ assertFalse(iterator.hasNext())
84+ assertFailsWith<IndexOutOfBoundsException > {
85+ iterator.next()
86+ }
87+ }
88+
89+ @Test
90+ fun codePointIterator_with_end_index_inside_surrogate_pair () {
91+ val iterator = " a\uD83E\uDD95 b" .codePointIterator(endIndex = 2 )
92+
93+ assertTrue(iterator.hasNext())
94+ assertEquals(' a' .toCodePoint(), iterator.next())
95+ assertTrue(iterator.hasNext())
96+ assertEquals(' \uD83E ' .toCodePoint(), iterator.next())
97+ assertFalse(iterator.hasNext())
98+ assertFailsWith<IndexOutOfBoundsException > {
99+ iterator.next()
100+ }
101+ }
32102}
0 commit comments