package test.text import kotlin.test.* import org.junit.Test as test class StringTest { test fun startsWith() { assertTrue("abcd".startsWith("ab")) assertTrue("abcd".startsWith("abcd")) assertTrue("abcd".startsWith("a")) assertFalse("abcd".startsWith("abcde")) assertFalse("abcd".startsWith("b")) assertFalse("".startsWith('a')) } test fun endsWith() { assertTrue("abcd".endsWith("d")) assertTrue("abcd".endsWith("abcd")) assertFalse("abcd".endsWith("b")) assertFalse("".endsWith('a')) } test fun testStartsWithChar() { assertTrue("abcd".startsWith('a')) assertFalse("abcd".startsWith('b')) assertFalse("".startsWith('a')) } test fun testEndsWithChar() { assertTrue("abcd".endsWith('d')) assertFalse("abcd".endsWith('b')) assertFalse("".endsWith('a')) } test fun capitalize() { assertEquals("A", "A".capitalize()) assertEquals("A", "a".capitalize()) assertEquals("Abcd", "abcd".capitalize()) assertEquals("Abcd", "Abcd".capitalize()) } test fun decapitalize() { assertEquals("a", "A".decapitalize()) assertEquals("a", "a".decapitalize()) assertEquals("abcd", "abcd".decapitalize()) assertEquals("abcd", "Abcd".decapitalize()) assertEquals("uRL", "URL".decapitalize()) } test fun slice() { val iter = listOf(4, 3, 0, 1) // abcde // 01234 assertEquals("bcd", "abcde".substring(1..3)) assertEquals("dcb", "abcde".slice(3 downTo 1)) assertEquals("edab", "abcde".slice(iter)) } test fun reverse() { assertEquals("dcba", "abcd".reverse()) assertEquals("4321", "1234".reverse()) assertEquals("", "".reverse()) } test fun indices() { assertEquals(0..4, "abcde".indices) assertEquals(0..0, "a".indices) assertTrue("".indices.isEmpty()) } test fun replaceRange() { val s = "sample text" assertEquals("sa??e text", s.replaceRange(2, 5, "??")) assertEquals("sa??e text", s.replaceRange(2..5, "??")) fails { s.replaceRange(5..2, "??") } fails { s.replaceRange(5, 2, "??") } } test fun substringDelimited() { val s = "-1,22,3+" // chars assertEquals("22,3+", s.substringAfter(',')) assertEquals("3+", s.substringAfterLast(',')) assertEquals("-1", s.substringBefore(',')) assertEquals("-1,22", s.substringBeforeLast(',')) // strings assertEquals("22,3+", s.substringAfter(",")) assertEquals("3+", s.substringAfterLast(",")) assertEquals("-1", s.substringBefore(",")) assertEquals("-1,22", s.substringBeforeLast(",")) // non-existing delimiter assertEquals("", s.substringAfter("+")) assertEquals("", s.substringBefore("-")) assertEquals(s, s.substringBefore("=")) assertEquals(s, s.substringAfter("=")) assertEquals("xxx", s.substringBefore("=", "xxx")) assertEquals("xxx", s.substringAfter("=", "xxx")) } test fun replaceDelimited() { val s = "/user/folder/file.extension" // chars assertEquals("/user/folder/file.doc", s.replaceAfter('.', "doc")) assertEquals("/user/folder/another.doc", s.replaceAfterLast('/', "another.doc")) assertEquals("new name.extension", s.replaceBefore('.', "new name")) assertEquals("/new/path/file.extension", s.replaceBeforeLast('/', "/new/path")) // strings assertEquals("/user/folder/file.doc", s.replaceAfter(".", "doc")) assertEquals("/user/folder/another.doc", s.replaceAfterLast("/", "another.doc")) assertEquals("new name.extension", s.replaceBefore(".", "new name")) assertEquals("/new/path/file.extension", s.replaceBeforeLast("/", "/new/path")) // non-existing delimiter assertEquals("/user/folder/file.extension", s.replaceAfter("=", "doc")) assertEquals("/user/folder/file.extension", s.replaceAfterLast("=", "another.doc")) assertEquals("/user/folder/file.extension", s.replaceBefore("=", "new name")) assertEquals("/user/folder/file.extension", s.replaceBeforeLast("=", "/new/path")) assertEquals("xxx", s.replaceBefore("=", "new name", "xxx")) assertEquals("xxx", s.replaceBeforeLast("=", "/new/path", "xxx")) } }