aboutsummaryrefslogtreecommitdiff
path: root/tests/run/t0325.scala
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-06-25 09:45:27 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-07-13 15:31:16 +0200
commitef536f00d9d480f28db3093b9dc09a90041cfb74 (patch)
treeca82afa7a37ce866978b0b66904941672f2dacc3 /tests/run/t0325.scala
parent9185428b63b138f8c05ade5592e59956296b5128 (diff)
downloaddotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.tar.gz
dotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.tar.bz2
dotty-ef536f00d9d480f28db3093b9dc09a90041cfb74.zip
Enable 61 tests that succeed.
Diffstat (limited to 'tests/run/t0325.scala')
-rw-r--r--tests/run/t0325.scala53
1 files changed, 53 insertions, 0 deletions
diff --git a/tests/run/t0325.scala b/tests/run/t0325.scala
new file mode 100644
index 000000000..ea6180306
--- /dev/null
+++ b/tests/run/t0325.scala
@@ -0,0 +1,53 @@
+case class RS(self: String) {
+
+ // NB. "\\Q" + '\\' + "\\E" works on Java 1.5 and newer, but not on Java 1.4
+ private def escape(ch: Char): String = ch match {
+ case '\\' => "\\\\"
+ case _ => "\\Q"+ch+"\\E"
+ }
+
+ def split(separator: Char): Array[String] = self.split(escape(separator))
+
+ def split(separators: Array[Char]): Array[String] = {
+ val re = separators.foldLeft("[")(_+escape(_)) + "]"
+ self.split(re)
+ }
+}
+
+object Test {
+ def expect = List("a","b")
+ def test(f: => Array[String], which: String): Unit = {
+ try {
+ val ret = f.toList
+ if (ret != expect)
+ println(which + " returned " + ret + " when expecting " + expect)
+ else
+ println(ret)
+ } catch {
+ case e: Throwable => println(which + " failed with " + e.getClass)
+ }
+ }
+
+ def main(args: Array[String]): Unit = {
+ val badChars = "?*{+([\\^.$"
+
+ for (c <- badChars)
+ test(("a"+c+"b").split(c),"RichString split('"+ c + "')")
+ println
+
+ for (c <- badChars)
+ test(RS("a"+c+"b").split(c),"RS split('"+ c + "')")
+ println
+
+ val badCases = List(
+ ']' -> "x]", '&' -> "&&",'\\' -> "\\x", '[' -> "[x",
+ '^' -> "^x", '-' -> "x-z"
+ )
+ for ((c,str) <- badCases)
+ test(("a"+c+"b").split(str.toArray),"RichString split(\""+ str + "\")")
+ println
+
+ for ((c,str) <- badCases)
+ test(RS("a"+c+"b").split(str.toArray),"RS split(\""+ str + "\")")
+ }
+}