1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
/*
* Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
* that can be found in the license/LICENSE.txt file.
*/
package test.text
import kotlin.test.*
class StringBuilderTest {
@Test fun stringBuild() {
val s = buildString {
append("a")
append(true)
}
assertEquals("atrue", s)
}
@Test fun appendMany() {
assertEquals("a1", StringBuilder().append("a", "1").toString())
assertEquals("a1", StringBuilder().append("a", 1).toString())
assertEquals("a1", StringBuilder().append("a", StringBuilder().append("1")).toString())
}
@Test fun append() {
// this test is needed for JS implementation
assertEquals("em", buildString {
append("element", 2, 4)
})
}
@Test fun asCharSequence() {
val original = "Some test string"
val sb = StringBuilder(original)
val result = sb.toString()
val cs = sb as CharSequence
assertEquals(result.length, cs.length)
assertEquals(result.length, sb.length)
for (index in result.indices) {
assertEquals(result[index], sb[index])
assertEquals(result[index], cs[index])
}
assertEquals(result.substring(2, 6), cs.subSequence(2, 6).toString())
}
@Test fun constructors() {
StringBuilder().let { sb ->
assertEquals(0, sb.length)
assertEquals("", sb.toString())
}
StringBuilder(16).let { sb ->
assertEquals(0, sb.length)
assertEquals("", sb.toString())
}
StringBuilder("content").let { sb ->
assertEquals(7, sb.length)
assertEquals("content", sb.toString())
}
StringBuilder(StringBuilder("content")).let { sb ->
assertEquals(7, sb.length)
assertEquals("content", sb.toString())
}
}
@Test fun clear() {
val sb = StringBuilder()
sb.append("test")
val s = sb.toString()
sb.clear()
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]) }
}
}
|