summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@typesafe.com>2015-02-09 13:51:51 -0800
committerAdriaan Moors <adriaan.moors@typesafe.com>2015-02-09 13:51:51 -0800
commite8365dedf7a42382b337d644e35cb405183ed2b2 (patch)
tree5ce53cad390a6328c527eb6fa5d39dcf4b601f2b /test
parent9d09247f13b8a77c1b3a2bb5d44510b7cec38dce (diff)
parentd1d3225e28ed1847470d976ffeefbce40e90d9ac (diff)
downloadscala-e8365dedf7a42382b337d644e35cb405183ed2b2.tar.gz
scala-e8365dedf7a42382b337d644e35cb405183ed2b2.tar.bz2
scala-e8365dedf7a42382b337d644e35cb405183ed2b2.zip
Merge pull request #4209 from kanielc/SI-8988
SI-8988 Escaping character in StringLike.split(c) is slow
Diffstat (limited to 'test')
-rw-r--r--test/junit/scala/collection/immutable/StringLikeTest.scala37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/junit/scala/collection/immutable/StringLikeTest.scala b/test/junit/scala/collection/immutable/StringLikeTest.scala
new file mode 100644
index 0000000000..3722bdfe4d
--- /dev/null
+++ b/test/junit/scala/collection/immutable/StringLikeTest.scala
@@ -0,0 +1,37 @@
+package scala.collection.immutable
+
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+
+import scala.tools.testing.AssertUtil
+import scala.util.Random
+
+/* Test for SI-8988 */
+@RunWith(classOf[JUnit4])
+class StringLikeTest {
+ @Test
+ def testStringSplitWithChar: Unit = {
+ val chars = (0 to 255).map(_.toChar)
+ def randString = Random.nextString(30)
+
+ for (c <- chars) {
+ val s = randString
+ val jString = new java.lang.String(s)
+
+ // make sure we can match a literal character done by Java's split
+ val jSplit = jString.split("\\Q" + c.toString + "\\E")
+ val sSplit = s.split(c)
+ AssertUtil.assertSameElements(jSplit, sSplit, s"Not same result as Java split for char $c in string $s")
+ }
+ }
+
+ @Test
+ def testSplitEdgeCases: Unit = {
+ AssertUtil.assertSameElements("abcd".split('d'), Array("abc")) // not Array("abc", "")
+ AssertUtil.assertSameElements("abccc".split('c'), Array("ab")) // not Array("ab", "", "", "")
+ AssertUtil.assertSameElements("xxx".split('x'), Array[String]()) // not Array("", "", "", "")
+ AssertUtil.assertSameElements("".split('x'), Array("")) // not Array()
+ AssertUtil.assertSameElements("--ch--omp--".split("-"), Array("", "", "ch", "", "omp")) // All the cases!
+ }
+}