diff options
author | Burak Emir <emir@epfl.ch> | 2007-09-16 02:39:52 +0000 |
---|---|---|
committer | Burak Emir <emir@epfl.ch> | 2007-09-16 02:39:52 +0000 |
commit | 0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71 (patch) | |
tree | 8ddae77b1334a6e4b80c47e3c58d650217fa80c1 /test/files/run/regularpatmatnew.scala | |
parent | 4c74083c14c959370dd69dd6a745f56354143998 (diff) | |
download | scala-0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71.tar.gz scala-0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71.tar.bz2 scala-0b2f65aa6c6b3bb3e7628720893fb8116fdc8f71.zip |
fixed seq matching bug + reorganized test cases
Diffstat (limited to 'test/files/run/regularpatmatnew.scala')
-rw-r--r-- | test/files/run/regularpatmatnew.scala | 158 |
1 files changed, 0 insertions, 158 deletions
diff --git a/test/files/run/regularpatmatnew.scala b/test/files/run/regularpatmatnew.scala deleted file mode 100644 index c610b80444..0000000000 --- a/test/files/run/regularpatmatnew.scala +++ /dev/null @@ -1,158 +0,0 @@ -object Test { - import scala.testing.SUnit._ - - def main(args: Array[String]) { - val tr = new TestResult - new TestSuite( - - new Test01, - new Test02, - new Test03, - new Test04, - new Test05, - new Test06, - new Test07, - new Test08 - - ).run(tr) - - for (val f <- tr.failures()) println(f) - } - - class Test01 extends TestCase("uno (all ignoring patterns on List)") { - def doMatch(xs: List[String]): String = xs match { - case List(_*) => "ok" - } - override def runTest() { - val list1 = List() - assertEquals(doMatch(list1), "ok") - val list2 = List("1","2","3") - assertEquals(doMatch(list2), "ok") - } - } - - /* these are not allowed, for strange reasons I will never figure out - - def doMatch(l:Seq[String]):String = l match { - case List(_*) => "ok" - case _ => "not ok" - } - - def doMatch(l:Seq[String]):String = l match { - case Array(_*) => "ok" - case _ => "not ok" - } - */ - - class Test02 extends TestCase("due (all ignoring patterns on Seq)") { - def doMatch(l: Seq[String]): String = l match { - case Seq(_*) => "ok" - } - override def runTest() { - val list1 = List() - assertEquals(doMatch(list1), "ok") - val list2 = List("1", "2", "3") - assertEquals(doMatch(list2), "ok") - val array3 = Array[String]() - assertEquals(doMatch(array3), "ok") - val array4 = Array[String]("ga", "gu") - assertEquals(doMatch(array4), "ok") - } - } - - class Test03 extends TestCase("tre (right-ignoring patterns on List, defaults)") { - def doMatch(xs: List[String]): String = xs match { - case List(_,_,_,_*) => "ok" - case _ => "not ok" - } - override def runTest() { - val list1 = List() - assertEquals(doMatch(list1), "not ok") - val list2 = List("1","2","3") - assertEquals(doMatch(list2), "ok") - val list3 = List("1","2","3","4") - assertEquals(doMatch(list3), "ok") - } - } - - - class Test04 extends TestCase("quattro (all- and right-ignoring pattern on case class w/ seq param)") { - case class Foo(i: Int, chars: Char*) - - override def runTest() = { - val a = Foo(0, 'a') match { - case Foo(i, c, chars @ _*) => c - case _ => null - } - assertEquals(a, 'a') - - val b = Foo(0, 'a') match { - case Foo(i, chars @ _*) => 'b' - case _ => null - } - assertEquals(b, 'b') - } - } - - class Test05 extends TestCase("cinque (sealed case class with ignoring seq patterns)") { - sealed abstract class Con; - - case class Foo() extends Con - case class Bar(xs:Con*) extends Con - - override def runTest() { - val res = (Bar(Foo()):Con) match { - case Bar(xs@_*) => xs // this should be optimized away to a pattern Bar(xs) - case _ => Nil - } - assertEquals("res instance"+res.isInstanceOf[Seq[Con] forSome { type Con }]+" res(0)="+res(0), true, res.isInstanceOf[Seq[Foo] forSome { type Foo}] && res(0) == Foo() ) - } - } - - class Test06 extends TestCase("sei (not regular) fancy guards / bug#644 ") { - - case class A(i: Any) - - def doMatch(x: Any, bla: int) = x match { - case x:A if (bla==1) => 0 - case A(1) => 1 - case A(A(1)) => 2 - } - - override def runTest() { - assertEquals(doMatch(A(null),1), 0) - assertEquals(doMatch(A(1),2), 1) - assertEquals(doMatch(A(A(1)),2), 2) - } - - } - - class Test07 extends TestCase("sette List of chars") { - def doMatch1(xs: List[char]) = xs match { - case List(x, y, _*) => x::y::Nil - } - def doMatch2(xs:List[char]) = xs match { - case List(x, y, z, w) => List(z,w) - } - //def doMatch3(xs:List[char]) = xs match { - // case List(_*, z, w) => w::Nil - //} - override def runTest() { - assertEquals(doMatch1(List('a','b','c','d')), List('a','b')) - assertEquals(doMatch2(List('a','b','c','d')), List('c','d')) - //assertEquals(doMatch3(List('a','b','c','d')), List('d')) - } - } - - class Test08 extends TestCase("backquoted identifiers in pattern") { - override def runTest() { - val xs = List(2, 3) - val ys = List(1, 2, 3) match { - case x :: `xs` => xs - case _ => Nil - } - assertEquals(xs, ys) - } - } - -} |