regex: Initial regex implementation
regex: All tests are passed.
This commit is contained in:
+53
@@ -0,0 +1,53 @@
|
||||
import kotlin.text.*
|
||||
import kotlin.test.*
|
||||
|
||||
fun assertTrue(msg: String, value: Boolean) = assertTrue(value, msg)
|
||||
fun assertFalse(msg: String, value: Boolean) = assertFalse(value, msg)
|
||||
|
||||
fun codePointToString(codePoint: Int): String {
|
||||
val charArray = Char.toChars(codePoint)
|
||||
return fromCharArray(charArray, 0, charArray.size)
|
||||
}
|
||||
|
||||
fun box() {}
|
||||
|
||||
// TODO: Here is a performance problem: an execution of this test requires much more time than it in Kotlin/JVM.
|
||||
fun box1() {
|
||||
// Regression for HARMONY-3145
|
||||
var p = Regex("(\\p{all})+")
|
||||
var res = true
|
||||
var cnt = 0
|
||||
var s: String
|
||||
for (i in 0..1114111) {
|
||||
if (i % 200000 == 0) {
|
||||
println(i)
|
||||
}
|
||||
s = codePointToString(i)
|
||||
// if (!s.matches(p.toString().toRegex())) { TODO: Uncomment when caching is done.
|
||||
if (!s.matches(p)) {
|
||||
cnt++
|
||||
res = false
|
||||
}
|
||||
}
|
||||
assertTrue(res)
|
||||
assertEquals(0, cnt)
|
||||
|
||||
p = Regex("(\\P{all})+")
|
||||
res = true
|
||||
cnt = 0
|
||||
|
||||
for (i in 0..1114111) {
|
||||
if (i % 200000 == 0) {
|
||||
println(i)
|
||||
}
|
||||
s = codePointToString(i)
|
||||
// if (!s.matches(p.toString().toRegex())) { TODO: Uncomment when caching is done.
|
||||
if (!s.matches(p)) {
|
||||
cnt++
|
||||
res = false
|
||||
}
|
||||
}
|
||||
|
||||
assertFalse(res)
|
||||
assertEquals(0x110000, cnt)
|
||||
}
|
||||
+4
-38
@@ -18,6 +18,9 @@
|
||||
import kotlin.text.*
|
||||
import kotlin.test.*
|
||||
|
||||
fun assertTrue(msg: String, value: Boolean) = assertTrue(value, msg)
|
||||
fun assertFalse(msg: String, value: Boolean) = assertFalse(value, msg)
|
||||
|
||||
internal var testPatterns = arrayOf("(a|b)*abb", "(1*2*3*4*)*567", "(a|b|c|d)*aab", "(1|2|3|4|5|6|7|8|9|0)(1|2|3|4|5|6|7|8|9|0)*", "(abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ)*", "(a|b)*(a|b)*A(a|b)*lice.*", "(a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)(a|b|c|d|e|f|g|h|" + "i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z)*(1|2|3|4|5|6|7|8|9|0)*|while|for|struct|if|do")
|
||||
|
||||
internal var groupPatterns = arrayOf("(a|b)*aabb", "((a)|b)*aabb", "((a|b)*)a(abb)", "(((a)|(b))*)aabb", "(((a)|(b))*)aa(b)b", "(((a)|(b))*)a(a(b)b)")
|
||||
@@ -78,7 +81,7 @@ fun testGroupint() {
|
||||
val regex = Regex(groupPatterns[i])
|
||||
val result = regex.matchEntire(positiveTestString)!!
|
||||
for (j in 0..groupResults[i].size - 1) {
|
||||
assertEquals("i: $i j: $j", groupResults[i][j], result.groupValues[j + 1])
|
||||
assertEquals(groupResults[i][j], result.groupValues[j + 1], "i: $i j: $j")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,42 +414,6 @@ fun testFindDollar() {
|
||||
assertEquals("a", result!!.groupValues[0])
|
||||
}
|
||||
|
||||
|
||||
fun testAllCodePoints() {
|
||||
// Regression for HARMONY-3145
|
||||
val codePoint = IntArray(1)
|
||||
var p = Regex("(\\p{all})+")
|
||||
var res = true
|
||||
var cnt = 0
|
||||
var s: String
|
||||
for (i in 0..1114111) {
|
||||
codePoint[0] = i
|
||||
s = String(codePoint, 0, 1)
|
||||
if (!s.matches(p.toString().toRegex())) {
|
||||
cnt++
|
||||
res = false
|
||||
}
|
||||
}
|
||||
assertTrue(res)
|
||||
assertEquals(0, cnt)
|
||||
|
||||
p = Regex("(\\P{all})+")
|
||||
res = true
|
||||
cnt = 0
|
||||
|
||||
for (i in 0..1114111) {
|
||||
codePoint[0] = i
|
||||
s = String(codePoint, 0, 1)
|
||||
if (!s.matches(p.toString().toRegex())) {
|
||||
cnt++
|
||||
res = false
|
||||
}
|
||||
}
|
||||
|
||||
assertFalse(res)
|
||||
assertEquals(0x110000, cnt)
|
||||
}
|
||||
|
||||
/*
|
||||
* Regression test for HARMONY-674
|
||||
*/
|
||||
@@ -501,7 +468,6 @@ fun box() {
|
||||
testUnicodeCategory()
|
||||
testSplitEmpty()
|
||||
testFindDollar()
|
||||
testAllCodePoints()
|
||||
testPatternMatcher()
|
||||
test3360()
|
||||
testGeneralPunctuationCategory()
|
||||
|
||||
+28
-28
@@ -22,77 +22,77 @@ fun testErrorConditions2() {
|
||||
val regex = Regex("(foo[0-9])(bar[a-z])")
|
||||
var result = regex.find("foo1barzfoo2baryfoozbar5")
|
||||
|
||||
Assert.assertTrue(result != null)
|
||||
Assert.assertEquals(0, result!!.range.start)
|
||||
Assert.assertEquals(7, result.range.endInclusive)
|
||||
Assert.assertEquals(0, result.groups[0]!!.range.start)
|
||||
Assert.assertEquals(7, result.groups[0]!!.range.endInclusive)
|
||||
Assert.assertEquals(0, result.groups[1]!!.range.start)
|
||||
Assert.assertEquals(3, result.groups[1]!!.range.endInclusive)
|
||||
Assert.assertEquals(4, result.groups[2]!!.range.start)
|
||||
Assert.assertEquals(7, result.groups[2]!!.range.endInclusive)
|
||||
assertTrue(result != null)
|
||||
assertEquals(0, result!!.range.start)
|
||||
assertEquals(7, result.range.endInclusive)
|
||||
assertEquals(0, result.groups[0]!!.range.start)
|
||||
assertEquals(7, result.groups[0]!!.range.endInclusive)
|
||||
assertEquals(0, result.groups[1]!!.range.start)
|
||||
assertEquals(3, result.groups[1]!!.range.endInclusive)
|
||||
assertEquals(4, result.groups[2]!!.range.start)
|
||||
assertEquals(7, result.groups[2]!!.range.endInclusive)
|
||||
|
||||
try {
|
||||
result.groups[3]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groupValues[3]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groups[-1]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groupValues[-1]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
result = result.next()
|
||||
Assert.assertTrue(result != null)
|
||||
Assert.assertEquals(8, result!!.range.start)
|
||||
Assert.assertEquals(15, result.range.endInclusive)
|
||||
Assert.assertEquals(8, result.groups[0]!!.range.start)
|
||||
Assert.assertEquals(15, result.groups[0]!!.range.endInclusive)
|
||||
Assert.assertEquals(8, result.groups[1]!!.range.start)
|
||||
Assert.assertEquals(11, result.groups[1]!!.range.endInclusive)
|
||||
Assert.assertEquals(12, result.groups[2]!!.range.start)
|
||||
Assert.assertEquals(15, result.groups[2]!!.range.endInclusive)
|
||||
assertTrue(result != null)
|
||||
assertEquals(8, result!!.range.start)
|
||||
assertEquals(15, result.range.endInclusive)
|
||||
assertEquals(8, result.groups[0]!!.range.start)
|
||||
assertEquals(15, result.groups[0]!!.range.endInclusive)
|
||||
assertEquals(8, result.groups[1]!!.range.start)
|
||||
assertEquals(11, result.groups[1]!!.range.endInclusive)
|
||||
assertEquals(12, result.groups[2]!!.range.start)
|
||||
assertEquals(15, result.groups[2]!!.range.endInclusive)
|
||||
|
||||
try {
|
||||
result.groups[3]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groupValues[3]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groups[-1]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
try {
|
||||
result.groupValues[-1]
|
||||
Assert.fail("IndexOutOfBoundsException expected")
|
||||
fail("IndexOutOfBoundsException expected")
|
||||
} catch (e: IndexOutOfBoundsException) {
|
||||
}
|
||||
|
||||
result = result.next()
|
||||
Assert.assertFalse(result != null)
|
||||
assertFalse(result != null)
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -105,7 +105,7 @@ fun testReplacementBackSlash() {
|
||||
val regex = Regex(replacedString)
|
||||
try {
|
||||
regex.replace(str, substitutionString)
|
||||
Assert.fail("IllegalArgumentException should be thrown")
|
||||
fail("IllegalArgumentException should be thrown")
|
||||
} catch (e: IllegalArgumentException) {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,27 +26,27 @@ fun testCase() {
|
||||
|
||||
regex = Regex("([a-z]+)[0-9]+")
|
||||
result = regex.find("cAT123#dog345")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("dog", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("dog", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("([a-z]+)[0-9]+", RegexOption.IGNORE_CASE)
|
||||
result = regex.find("cAt123#doG345")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("cAt", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("cAt", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("doG", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("doG", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("(?i)([a-z]+)[0-9]+")
|
||||
result = regex.find("cAt123#doG345")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("cAt", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("cAt", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("doG", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("doG", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
}
|
||||
|
||||
fun testMultiline() {
|
||||
@@ -55,59 +55,59 @@ fun testMultiline() {
|
||||
|
||||
regex = Regex("^foo")
|
||||
result = regex.find("foobar")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertTrue(result!!.range.start == 0 && result.range.endInclusive == 2)
|
||||
Assert.assertTrue(result.groups[0]!!.range.start == 0 && result.groups[0]!!.range.endInclusive == 2)
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertTrue(result!!.range.start == 0 && result.range.endInclusive == 2)
|
||||
assertTrue(result.groups[0]!!.range.start == 0 && result.groups[0]!!.range.endInclusive == 2)
|
||||
assertNull(result.next())
|
||||
|
||||
result = regex.find("barfoo")
|
||||
Assert.assertNull(result)
|
||||
assertNull(result)
|
||||
|
||||
regex = Regex("foo$")
|
||||
result = regex.find("foobar")
|
||||
Assert.assertNull(result)
|
||||
assertNull(result)
|
||||
|
||||
result = regex.find("barfoo")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertTrue(result!!.range.start == 3 && result.range.endInclusive == 5)
|
||||
Assert.assertTrue(result.groups[0]!!.range.start == 3 && result.groups[0]!!.range.endInclusive == 5)
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertTrue(result!!.range.start == 3 && result.range.endInclusive == 5)
|
||||
assertTrue(result.groups[0]!!.range.start == 3 && result.groups[0]!!.range.endInclusive == 5)
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("^foo([0-9]*)", RegexOption.MULTILINE)
|
||||
result = regex.find("foo1bar\nfoo2foo3\nbarfoo4")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("1", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("1", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("2", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("2", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("foo([0-9]*)$", RegexOption.MULTILINE)
|
||||
result = regex.find("foo1bar\nfoo2foo3\nbarfoo4")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("3", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("3", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("4", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("4", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("(?m)^foo([0-9]*)")
|
||||
result = regex.find("foo1bar\nfoo2foo3\nbarfoo4")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("1", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("1", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("2", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("2", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
|
||||
regex = Regex("(?m)foo([0-9]*)$")
|
||||
result = regex.find("foo1bar\nfoo2foo3\nbarfoo4")
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("3", result!!.groupValues[1])
|
||||
assertNotNull(result)
|
||||
assertEquals("3", result!!.groupValues[1])
|
||||
result = result.next()
|
||||
Assert.assertNotNull(result)
|
||||
Assert.assertEquals("4", result!!.groupValues[1])
|
||||
Assert.assertNull(result.next())
|
||||
assertNotNull(result)
|
||||
assertEquals("4", result!!.groupValues[1])
|
||||
assertNull(result.next())
|
||||
}
|
||||
|
||||
fun box() {
|
||||
|
||||
+2
-2
@@ -21,7 +21,7 @@ fun testCase() {
|
||||
val regex = "("
|
||||
try {
|
||||
Regex(regex)
|
||||
Assert.fail("PatternSyntaxException expected")
|
||||
fail("PatternSyntaxException expected")
|
||||
} catch (e: PatternSyntaxException) {
|
||||
// TODO: Check the exception's properties.
|
||||
}
|
||||
@@ -32,7 +32,7 @@ fun testCase2() {
|
||||
val regex = "[4-"
|
||||
try {
|
||||
Regex(regex)
|
||||
Assert.fail("PatternSyntaxException expected")
|
||||
fail("PatternSyntaxException expected")
|
||||
} catch (e: PatternSyntaxException) {
|
||||
}
|
||||
|
||||
|
||||
+249
-246
File diff suppressed because it is too large
Load Diff
+519
-519
File diff suppressed because it is too large
Load Diff
@@ -28,8 +28,8 @@ fun testSimpleReplace() {
|
||||
|
||||
val regex = Regex(pattern)
|
||||
|
||||
Assert.assertEquals("foobarxxxarfoofo1", regex.replaceFirst(target, repl))
|
||||
Assert.assertEquals("foobarxxxarfooxxx", regex.replace(target, repl))
|
||||
assertEquals("foobarxxxarfoofo1", regex.replaceFirst(target, repl))
|
||||
assertEquals("foobarxxxarfooxxx", regex.replace(target, repl))
|
||||
}
|
||||
|
||||
fun testCaptureReplace() {
|
||||
@@ -45,18 +45,18 @@ fun testCaptureReplace() {
|
||||
|
||||
regex = Regex(pattern)
|
||||
s = regex.replaceFirst(target, repl)
|
||||
Assert.assertEquals("foo[31];bar[42];[99]xyz", s)
|
||||
assertEquals("foo[31];bar[42];[99]xyz", s)
|
||||
s = regex.replace(target, repl)
|
||||
Assert.assertEquals("foo[31];bar[42];xyz[99]", s)
|
||||
assertEquals("foo[31];bar[42];xyz[99]", s)
|
||||
|
||||
target = "[31]foo(42)bar{63}zoo;[12]abc(34)def{56}ghi;{99}xyz[88]xyz(77)xyz;"
|
||||
pattern = "\\[([0-9]+)\\]([a-z]+)\\(([0-9]+)\\)([a-z]+)\\{([0-9]+)\\}([a-z]+)"
|
||||
repl = "[$5]$6($3)$4{$1}$2"
|
||||
regex = Regex(pattern)
|
||||
s = regex.replaceFirst(target, repl)
|
||||
Assert.assertEquals("[63]zoo(42)bar{31}foo;[12]abc(34)def{56}ghi;{99}xyz[88]xyz(77)xyz;", s)
|
||||
assertEquals("[63]zoo(42)bar{31}foo;[12]abc(34)def{56}ghi;{99}xyz[88]xyz(77)xyz;", s)
|
||||
s = regex.replace(target, repl)
|
||||
Assert.assertEquals("[63]zoo(42)bar{31}foo;[56]ghi(34)def{12}abc;{99}xyz[88]xyz(77)xyz;", s)
|
||||
assertEquals("[63]zoo(42)bar{31}foo;[56]ghi(34)def{12}abc;{99}xyz[88]xyz(77)xyz;", s)
|
||||
}
|
||||
|
||||
fun testEscapeReplace() {
|
||||
@@ -69,13 +69,13 @@ fun testEscapeReplace() {
|
||||
pattern = "'"
|
||||
repl = "\\'"
|
||||
s = target.replace(pattern.toRegex(), repl)
|
||||
Assert.assertEquals("foo'bar''foo", s)
|
||||
assertEquals("foo'bar''foo", s)
|
||||
repl = "\\\\'"
|
||||
s = target.replace(pattern.toRegex(), repl)
|
||||
Assert.assertEquals("foo\\'bar\\'\\'foo", s)
|
||||
assertEquals("foo\\'bar\\'\\'foo", s)
|
||||
repl = "\\$3"
|
||||
s = target.replace(pattern.toRegex(), repl)
|
||||
Assert.assertEquals("foo$3bar$3$3foo", s)
|
||||
assertEquals("foo$3bar$3$3foo", s)
|
||||
}
|
||||
|
||||
fun box() {
|
||||
|
||||
@@ -22,13 +22,12 @@ fun testSimple() {
|
||||
val p = Regex("/")
|
||||
val results = p.split("have/you/done/it/right")
|
||||
val expected = arrayOf("have", "you", "done", "it", "right")
|
||||
Assert.assertEquals(expected.size, results.size)
|
||||
assertEquals(expected.size, results.size)
|
||||
for (i in expected.indices) {
|
||||
Assert.assertEquals(results[i], expected[i])
|
||||
assertEquals(results[i], expected[i])
|
||||
}
|
||||
}
|
||||
|
||||
@Throws(PatternSyntaxException::class)
|
||||
fun testSplit1() {
|
||||
var p = Regex(" ")
|
||||
|
||||
@@ -36,100 +35,100 @@ fun testSplit1() {
|
||||
var tokens: List<String>
|
||||
|
||||
tokens = p.split(input, 1)
|
||||
Assert.assertEquals(1, tokens.size)
|
||||
Assert.assertTrue(tokens[0] == input)
|
||||
assertEquals(1, tokens.size)
|
||||
assertTrue(tokens[0] == input)
|
||||
tokens = p.split(input, 2)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poodle", tokens[0])
|
||||
Assert.assertEquals("zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poodle", tokens[0])
|
||||
assertEquals("zoo", tokens[1])
|
||||
tokens = p.split(input, 5)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poodle", tokens[0])
|
||||
Assert.assertEquals("zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poodle", tokens[0])
|
||||
assertEquals("zoo", tokens[1])
|
||||
tokens = p.split(input, 0)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poodle", tokens[0])
|
||||
Assert.assertEquals("zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poodle", tokens[0])
|
||||
assertEquals("zoo", tokens[1])
|
||||
tokens = p.split(input)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poodle", tokens[0])
|
||||
Assert.assertEquals("zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poodle", tokens[0])
|
||||
assertEquals("zoo", tokens[1])
|
||||
|
||||
p = Regex("d")
|
||||
|
||||
tokens = p.split(input, 1)
|
||||
Assert.assertEquals(1, tokens.size)
|
||||
Assert.assertTrue(tokens[0] == input)
|
||||
assertEquals(1, tokens.size)
|
||||
assertTrue(tokens[0] == input)
|
||||
tokens = p.split(input, 2)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poo", tokens[0])
|
||||
Assert.assertEquals("le zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poo", tokens[0])
|
||||
assertEquals("le zoo", tokens[1])
|
||||
tokens = p.split(input, 5)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poo", tokens[0])
|
||||
Assert.assertEquals("le zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poo", tokens[0])
|
||||
assertEquals("le zoo", tokens[1])
|
||||
tokens = p.split(input, 0)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poo", tokens[0])
|
||||
Assert.assertEquals("le zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poo", tokens[0])
|
||||
assertEquals("le zoo", tokens[1])
|
||||
tokens = p.split(input)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("poo", tokens[0])
|
||||
Assert.assertEquals("le zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("poo", tokens[0])
|
||||
assertEquals("le zoo", tokens[1])
|
||||
|
||||
p = Regex("o")
|
||||
|
||||
tokens = p.split(input, 1)
|
||||
Assert.assertEquals(1, tokens.size)
|
||||
Assert.assertTrue(tokens[0] == input)
|
||||
assertEquals(1, tokens.size)
|
||||
assertTrue(tokens[0] == input)
|
||||
tokens = p.split(input, 2)
|
||||
Assert.assertEquals(2, tokens.size)
|
||||
Assert.assertEquals("p", tokens[0])
|
||||
Assert.assertEquals("odle zoo", tokens[1])
|
||||
assertEquals(2, tokens.size)
|
||||
assertEquals("p", tokens[0])
|
||||
assertEquals("odle zoo", tokens[1])
|
||||
tokens = p.split(input, 5)
|
||||
Assert.assertEquals(5, tokens.size)
|
||||
Assert.assertEquals("p", tokens[0])
|
||||
Assert.assertTrue(tokens[1] == "")
|
||||
Assert.assertEquals("dle z", tokens[2])
|
||||
Assert.assertTrue(tokens[3] == "")
|
||||
Assert.assertTrue(tokens[4] == "")
|
||||
assertEquals(5, tokens.size)
|
||||
assertEquals("p", tokens[0])
|
||||
assertTrue(tokens[1] == "")
|
||||
assertEquals("dle z", tokens[2])
|
||||
assertTrue(tokens[3] == "")
|
||||
assertTrue(tokens[4] == "")
|
||||
tokens = p.split(input, 0)
|
||||
Assert.assertEquals(5, tokens.size)
|
||||
Assert.assertEquals("p", tokens[0])
|
||||
Assert.assertTrue(tokens[1] == "")
|
||||
Assert.assertEquals("dle z", tokens[2])
|
||||
Assert.assertTrue(tokens[3] == "")
|
||||
Assert.assertTrue(tokens[4] == "")
|
||||
assertEquals(5, tokens.size)
|
||||
assertEquals("p", tokens[0])
|
||||
assertTrue(tokens[1] == "")
|
||||
assertEquals("dle z", tokens[2])
|
||||
assertTrue(tokens[3] == "")
|
||||
assertTrue(tokens[4] == "")
|
||||
tokens = p.split(input)
|
||||
Assert.assertEquals(5, tokens.size)
|
||||
Assert.assertEquals("p", tokens[0])
|
||||
Assert.assertTrue(tokens[1] == "")
|
||||
Assert.assertEquals("dle z", tokens[2])
|
||||
Assert.assertTrue(tokens[3] == "")
|
||||
Assert.assertTrue(tokens[4] == "")
|
||||
assertEquals(5, tokens.size)
|
||||
assertEquals("p", tokens[0])
|
||||
assertTrue(tokens[1] == "")
|
||||
assertEquals("dle z", tokens[2])
|
||||
assertTrue(tokens[3] == "")
|
||||
assertTrue(tokens[4] == "")
|
||||
}
|
||||
|
||||
fun testSplit2() {
|
||||
val p = Regex("")
|
||||
var s: List<String>
|
||||
s = p.split("a", 0)
|
||||
Assert.assertEquals(3, s.size)
|
||||
Assert.assertEquals("", s[0])
|
||||
Assert.assertEquals("a", s[1])
|
||||
Assert.assertEquals("", s[2])
|
||||
assertEquals(3, s.size)
|
||||
assertEquals("", s[0])
|
||||
assertEquals("a", s[1])
|
||||
assertEquals("", s[2])
|
||||
|
||||
s = p.split("", 0)
|
||||
Assert.assertEquals(1, s.size)
|
||||
Assert.assertEquals("", s[0])
|
||||
assertEquals(1, s.size)
|
||||
assertEquals("", s[0])
|
||||
|
||||
s = p.split("abcd", 0)
|
||||
Assert.assertEquals(6, s.size)
|
||||
Assert.assertEquals("", s[0])
|
||||
Assert.assertEquals("a", s[1])
|
||||
Assert.assertEquals("b", s[2])
|
||||
Assert.assertEquals("c", s[3])
|
||||
Assert.assertEquals("d", s[4])
|
||||
Assert.assertEquals("", s[5])
|
||||
assertEquals(6, s.size)
|
||||
assertEquals("", s[0])
|
||||
assertEquals("a", s[1])
|
||||
assertEquals("b", s[2])
|
||||
assertEquals("c", s[3])
|
||||
assertEquals("d", s[4])
|
||||
assertEquals("", s[5])
|
||||
}
|
||||
|
||||
fun testSplitSupplementaryWithEmptyString() {
|
||||
@@ -141,12 +140,12 @@ fun testSplitSupplementaryWithEmptyString() {
|
||||
val p = Regex("")
|
||||
val s: List<String>
|
||||
s = p.split("a\ud869\uded6b", 0)
|
||||
Assert.assertEquals(5, s.size)
|
||||
Assert.assertEquals("", s[0])
|
||||
Assert.assertEquals("a", s[1])
|
||||
Assert.assertEquals("\ud869\uded6", s[2])
|
||||
Assert.assertEquals("b", s[3])
|
||||
Assert.assertEquals("", s[4])
|
||||
assertEquals(5, s.size)
|
||||
assertEquals("", s[0])
|
||||
assertEquals("a", s[1])
|
||||
assertEquals("\ud869\uded6", s[2])
|
||||
assertEquals("b", s[3])
|
||||
assertEquals("", s[4])
|
||||
}
|
||||
|
||||
fun box() {
|
||||
|
||||
Reference in New Issue
Block a user