Trimming and padding methods.

Kinda breaking change: Char.isWhitespace treats non-breaking spaces as whitespace too to match the Unicode definition of whitespace.
This commit is contained in:
Ilya Gorbunov
2015-03-19 15:23:18 +03:00
parent 0580039ded
commit ba15e5b295
4 changed files with 138 additions and 21 deletions
+43 -1
View File
@@ -143,11 +143,15 @@ class StringTest {
assertEquals("a ", " a ".trimLeading())
assertEquals("a b", " a b".trimLeading())
assertEquals("a b ", " a b ".trimLeading())
assertEquals("a", " \u00A0 a".trimLeading())
assertEquals("a", "\ta".trimLeading())
assertEquals("a", "\t\ta".trimLeading())
assertEquals("a", "\ra".trimLeading())
assertEquals("a", "\na".trimLeading())
assertEquals("a=", "-=-=a=".trimLeading('-','='))
assertEquals("123a", "ab123a".trimLeading { !it.isDigit() })
}
test fun trimTrailing() {
@@ -158,11 +162,15 @@ class StringTest {
assertEquals(" a", " a ".trimTrailing())
assertEquals("a b", "a b ".trimTrailing())
assertEquals(" a b", " a b ".trimTrailing())
assertEquals("a", "a \u00A0 ".trimTrailing())
assertEquals("a", "a\t".trimTrailing())
assertEquals("a", "a\t\t".trimTrailing())
assertEquals("a", "a\r".trimTrailing())
assertEquals("a", "a\n".trimTrailing())
assertEquals("=a", "=a=-=-".trimTrailing('-','='))
assertEquals("ab123", "ab123a".trimTrailing { !it.isDigit() })
}
test fun trimTrailingAndLeading() {
@@ -174,12 +182,46 @@ class StringTest {
"\ta\tb\t",
"\t\ta\t\t",
"\ra\r",
"\na\n"
"\na\n",
" \u00A0 a \u00A0 "
)
for (example in examples) {
assertEquals(example.trim(), example.trimTrailing().trimLeading())
assertEquals(example.trim(), example.trimLeading().trimTrailing())
}
val examplesForPredicate = array(
"123",
"-=123=-"
)
val trimChars = charArray('-','=')
val trimPredicate = { (it: Char) -> !it.isDigit() }
for (example in examplesForPredicate) {
assertEquals(example.trimLeading(*trimChars).trimTrailing(*trimChars), example.trim(*trimChars))
assertEquals(example.trimLeading(trimPredicate).trimTrailing(trimPredicate), example.trim(trimPredicate))
}
}
test fun padLeft() {
assertEquals("s", "s".padLeft(0))
assertEquals("s", "s".padLeft(1))
assertEquals(" ", "".padLeft(2))
assertEquals("--s", "s".padLeft(3, '-'))
fails {
"s".padLeft(-1)
}
}
test fun padRight() {
assertEquals("s", "s".padRight(0))
assertEquals("s", "s".padRight(1))
assertEquals(" ", "".padRight(2))
assertEquals("s--", "s".padRight(3, '-'))
fails {
"s".padRight(-1)
}
}
}