diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-10-26 21:01:12 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-10-26 21:01:12 +0000 |
commit | f3068614fb38fc08be54ac1179a1cfec52b8b13b (patch) | |
tree | 76ee219f209559d900b17682e29c9aaf9b3d73ab /test/files/jvm/actor-receive-sender.scala | |
parent | 63b1fd9be6c8c9e28092d775037c695af4b264e3 (diff) | |
download | scala-f3068614fb38fc08be54ac1179a1cfec52b8b13b.tar.gz scala-f3068614fb38fc08be54ac1179a1cfec52b8b13b.tar.bz2 scala-f3068614fb38fc08be54ac1179a1cfec52b8b13b.zip |
Second half of fix and tests for #1518.
Diffstat (limited to 'test/files/jvm/actor-receive-sender.scala')
-rw-r--r-- | test/files/jvm/actor-receive-sender.scala | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/test/files/jvm/actor-receive-sender.scala b/test/files/jvm/actor-receive-sender.scala new file mode 100644 index 0000000000..ea7c40cced --- /dev/null +++ b/test/files/jvm/actor-receive-sender.scala @@ -0,0 +1,51 @@ +import scala.actors.{Actor, TIMEOUT, Exit} +import scala.actors.Actor._ + +object Test { + + val NUM = 2000 + + def main(args: Array[String]) { + var b: Actor = null + var c: Actor = null + + val a = actor { + for (_ <- 0 until NUM) + receive { + case 'hello if sender == b => // do nothing + } + b ! 'ok + for (_ <- 0 until NUM) + receiveWithin (1000) { + case 'bye if sender == b => // do nothing + case TIMEOUT => b ! 'fail + } + b ! 'ok + } + + b = actor { + self.trapExit = true + link(a) + + for (_ <- 0 until NUM) + a ! 'hello + + val proceed = receive { + case Exit(from, reason) => println("FAIL"); false + case 'ok => println("OK"); true + case other => println(other); false + } + + if (proceed) { + for (_ <- 0 until NUM) + a ! 'bye + receive { + case Exit(from, reason) => println("FAIL") + case 'ok => println("OK") + case other => println(other) + } + } + } + } + +} |