diff options
author | Paul Phillips <paulp@improving.org> | 2009-05-09 03:53:41 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2009-05-09 03:53:41 +0000 |
commit | 2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2 (patch) | |
tree | 9bb2044c595fe260c352a00cf98bb2ecece50437 /test/disabled/run/forvaleq.scala | |
parent | f7ab13b08e085c3bf94d857fc9648ee724e4cb08 (diff) | |
download | scala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.tar.gz scala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.tar.bz2 scala-2ea3b94ee2519e01a3e1658909afeb33e7e9ebe2.zip |
Organized disabled directory so it works with p...
Organized disabled directory so it works with partest. You can run
./partest --srcpath disabled to run the tests in that location. Fixed a
few tests in disabled and pending and moved to files.
Diffstat (limited to 'test/disabled/run/forvaleq.scala')
-rw-r--r-- | test/disabled/run/forvaleq.scala | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/test/disabled/run/forvaleq.scala b/test/disabled/run/forvaleq.scala new file mode 100644 index 0000000000..1e4fd33dbc --- /dev/null +++ b/test/disabled/run/forvaleq.scala @@ -0,0 +1,92 @@ +// test "foo = expr" clauses in for comprehensions +// $Id$ + +import scala.collection.immutable.Queue +import scala.{List=>L} + +object Test { + // redefine some symbols to make it extra hard + class List + class Tuple2 + def List[A](as: A*) = 5 + + def firstDigit(x: Int): Int = + x match { + case 0 => 0 + case _ if (x<0) => firstDigit(-x) + case _ if (x<10) => x + case _ => firstDigit(x / 10) + } + + + { + // a basic test case + + val input = L.range(0,20) + val oddFirstTimesTwo = + for {x <- input + xf = firstDigit(x) + if xf % 2 == 1} + yield x*2 + println(oddFirstTimesTwo) + } + + { + // a test case with patterns + + val input = L.range(0, 20) + val oddFirstTimesTwo = + for {x <- input + xf = firstDigit(x) + yf = x - firstDigit(x) / 10 + (a, b) = (xf - yf, xf + yf) + if xf % 2 == 1} + yield a + b + println(oddFirstTimesTwo) + } + + { + // make sure it works on non-Ls + + // val input: Queue = Queue.Empty[int].incl(L.range(0,20)) + val input = L.range(0, 20).elements + val oddFirstTimesTwo = + for {x <- input + xf = firstDigit(x) + if xf % 2 == 1} + yield x*2 + println(oddFirstTimesTwo.toList) + } + + { + // yield the computed value + + val input = L.range(0,20) + val oddFirstTimesTwo = + for {x <- input + xf = firstDigit(x) + if xf % 2 == 1} + yield xf*2 + println(oddFirstTimesTwo) + } + + { + // make sure the function is only called once + var count: Int = 0 + + def fdct(x: Int) = { + count += 1 + firstDigit(x) + } + + val input = L.range(0,20) + for {x <- input + xf = fdct(x) + if xf % 2 == 1} + yield xf + + println("called " + count + " times") + } + + def main(args: Array[String]) {} +} |