diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-09-01 16:01:59 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-09-01 16:01:59 +0000 |
commit | 707baf25a295bac11358a5ff935b73cc508c4daa (patch) | |
tree | 7f04610d2b2bba0a3f468d25e230e42688d9148c /test/files/run/concurrent-stream.scala | |
parent | 8f1a52438a2954c935f59c2e10220beac0e42d03 (diff) | |
download | scala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.gz scala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.bz2 scala-707baf25a295bac11358a5ff935b73cc508c4daa.zip |
Closes #1220.
Diffstat (limited to 'test/files/run/concurrent-stream.scala')
-rw-r--r-- | test/files/run/concurrent-stream.scala | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/files/run/concurrent-stream.scala b/test/files/run/concurrent-stream.scala new file mode 100644 index 0000000000..42c695964e --- /dev/null +++ b/test/files/run/concurrent-stream.scala @@ -0,0 +1,36 @@ +// test concurrent calls to Stream.tail +object Test { + +def slowRange(from: Int, until: Int, cons: (Int, => Stream[Int]) => Stream[Int]): Stream[Int] = { + var current = from + def next: Stream[Int] = { + Thread.sleep(100) + if (current >= until) Stream.empty + else { + val stream = cons(current, next) + current += 1 + stream + } + } + next +} + +def testCons(cons: (Int, => Stream[Int]) => Stream[Int]): Unit = { + import scala.actors.Actor._ + + val stream = slowRange(0, 10, cons) + val main = self + actor { main ! stream.toList } + actor { main ! stream.toList } + val eval0 = receive { case list: List[Int] => list } + val eval1 = receive { case list: List[Int] => list } + println("Evaluation 0: " + eval0) + println("Evaluation 1: " + eval1) +} + + def main(args: Array[String]) { + println("Testing standard cons.") + testCons(Stream.cons.apply(_, _)) + } +} + |