summaryrefslogtreecommitdiff
path: root/test/pending/run/unapply.scala
diff options
context:
space:
mode:
Diffstat (limited to 'test/pending/run/unapply.scala')
-rw-r--r--test/pending/run/unapply.scala86
1 files changed, 0 insertions, 86 deletions
diff --git a/test/pending/run/unapply.scala b/test/pending/run/unapply.scala
deleted file mode 100644
index d84711519f..0000000000
--- a/test/pending/run/unapply.scala
+++ /dev/null
@@ -1,86 +0,0 @@
-import scala.testing.SUnit._
-
-object Test {
- def main(args:Array[String]) = {
- Foo.run
- Mas.run
- Lis.run
- }
-}
-
-// this class is used for representation
-class Bar {
- var size: Int = 50
- var name: String = "medium"
-}
-
-// test basic unapply for 0, 1 and 2 args and with precise type test
-object Fii {
- def unapply(x: Any): boolean = x.isInstanceOf[Bar]
-}
-object Faa {
- def unapply(x: Any): Option[String] = if(x.isInstanceOf[Bar]) Some(x.asInstanceOf[Bar].name) else None
-}
-object FaaPrecise {
- def unapply(x: Bar): Option[String] = Some(x.name)
-}
-object FaaPreciseSome {
- def unapply(x: Bar) = Some(x.name) // return type Some[String]
-}
-object Foo extends Assert {
- def unapply(x: Any): Option[Product2[Int, String]] = x match {
- case y: Bar => Some(Tuple(y.size, y.name))
- case _ => None
- }
- def doMatch1(b:Bar) = b match {
- case Foo(s:Int, n:String) => {s,n}
- }
- def doMatch2(b:Bar) = b match {
- case Fii() => null
- }
- def doMatch3(b:Bar) = b match {
- case Faa(n:String) => n
- }
- def doMatch4(b:Bar) = (b:Any) match {
- case FaaPrecise(n:String) => n
- }
- def doMatch5(b:Bar) = (b:Any) match {
- case FaaPreciseSome(n:String) => n
- }
- def run {
- val b = new Bar
- assertEquals(doMatch1(b),{50,"medium"})
- assertEquals(doMatch2(b),null)
- assertEquals(doMatch3(b),"medium")
- assertEquals(doMatch4(b),"medium")
- assertEquals(doMatch5(b),"medium")
- }
-}
-
-// same, but now object is not top-level
-object Mas extends Assert {
- object Gaz {
- def unapply(x: Any): Option[Product2[Int, String]] = x match {
- case y: Baz => Some(Tuple(y.size, y.name))
- case _ => None
- }
- }
- class Baz {
- var size: Int = 60
- var name: String = "too large"
- }
- def run {
- val b = new Baz
- assertEquals(b match {
- case Gaz(s:Int, n:String) => {s,n}
- }, {60,"too large"})
- }
-}
-
-object Lis extends Assert {
- def run {
- assertEquals((List(1,2,3): Any) match { case List(x,y,_*) => {x,y}}, {1,2})
- }
-}
-
-