Throw IOOB on invalid index in JS StringBuilder.get to adhere contract
This commit is contained in:
@@ -24,7 +24,8 @@ public actual class StringBuilder(content: String = "") : Appendable, CharSequen
|
||||
actual override val length: Int
|
||||
get() = string.asDynamic().length
|
||||
|
||||
actual override fun get(index: Int): Char = string[index]
|
||||
actual override fun get(index: Int): Char =
|
||||
string.getOrElse(index) { throw IndexOutOfBoundsException("index: $index, length: $length}") }
|
||||
|
||||
actual override fun subSequence(startIndex: Int, endIndex: Int): CharSequence = string.substring(startIndex, endIndex)
|
||||
|
||||
|
||||
@@ -75,4 +75,16 @@ class StringBuilderTest {
|
||||
assertTrue(sb.isEmpty())
|
||||
assertEquals("test", s)
|
||||
}
|
||||
|
||||
@Test fun get() {
|
||||
val sb = StringBuilder()
|
||||
sb.append("test")
|
||||
assertEquals('t', sb[0])
|
||||
assertEquals('e', sb[1])
|
||||
assertEquals('s', sb[2])
|
||||
assertEquals('t', sb[3])
|
||||
|
||||
assertFailsWith<IndexOutOfBoundsException> { assertEquals('t', sb[-1]) }
|
||||
assertFailsWith<IndexOutOfBoundsException> { assertEquals('t', sb[4]) }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user