diff options
author | Paul Phillips <paulp@improving.org> | 2011-08-24 17:11:55 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-08-24 17:11:55 +0000 |
commit | b9785280a7138a2bb52060faf94807aa0d07dec1 (patch) | |
tree | 870cc1930ac3d50cd07078260f58984224dd39a5 /test/files/run/t0325.scala | |
parent | 84fcf633d9ca507124806d64729cb8463bcebb69 (diff) | |
download | scala-b9785280a7138a2bb52060faf94807aa0d07dec1.tar.gz scala-b9785280a7138a2bb52060faf94807aa0d07dec1.tar.bz2 scala-b9785280a7138a2bb52060faf94807aa0d07dec1.zip |
Renamed tests named bugXXX to tXXX, no review.
Diffstat (limited to 'test/files/run/t0325.scala')
-rw-r--r-- | test/files/run/t0325.scala | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/test/files/run/t0325.scala b/test/files/run/t0325.scala new file mode 100644 index 0000000000..236f1b101f --- /dev/null +++ b/test/files/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) { + try { + val ret = f.toList + if (ret != expect) + println(which + " returned " + ret + " when expecting " + expect) + else + println(ret) + } catch { + case e@_ => println(which + " failed with " + e.getClass) + } + } + + def main(args: Array[String]) { + 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 + "\")") + } +} |