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 | |
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')
-rw-r--r-- | test/files/jvm/actor-receive-sender.check | 2 | ||||
-rw-r--r-- | test/files/jvm/actor-receive-sender.scala | 51 | ||||
-rw-r--r-- | test/files/jvm/replyreactor-react-sender.check | 1 | ||||
-rw-r--r-- | test/files/jvm/replyreactor-react-sender.scala | 41 |
4 files changed, 95 insertions, 0 deletions
diff --git a/test/files/jvm/actor-receive-sender.check b/test/files/jvm/actor-receive-sender.check new file mode 100644 index 0000000000..2c94e48371 --- /dev/null +++ b/test/files/jvm/actor-receive-sender.check @@ -0,0 +1,2 @@ +OK +OK 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) + } + } + } + } + +} diff --git a/test/files/jvm/replyreactor-react-sender.check b/test/files/jvm/replyreactor-react-sender.check new file mode 100644 index 0000000000..d86bac9de5 --- /dev/null +++ b/test/files/jvm/replyreactor-react-sender.check @@ -0,0 +1 @@ +OK diff --git a/test/files/jvm/replyreactor-react-sender.scala b/test/files/jvm/replyreactor-react-sender.scala new file mode 100644 index 0000000000..1127dfd0a5 --- /dev/null +++ b/test/files/jvm/replyreactor-react-sender.scala @@ -0,0 +1,41 @@ +import scala.actors.ReplyReactor +import scala.actors.Actor._ + +object Test { + + val NUM = 2000 + + def main(args: Array[String]) { + var b: ReplyReactor = null + + val a = new ReplyReactor { + def act() { + var i = 0 + loopWhile (i < NUM) { + i += 1 + react { + case 'hello if sender == this => b ! 'fail + case 'hello if sender == b => // do nothing + } + } andThen { + b ! 'ok + } + } + } + a.start() + + b = new ReplyReactor { + def act() { + for (_ <- 0 until NUM) + a ! 'hello + react { + case 'fail => println("FAIL") + case 'ok => println("OK") + case other => println(other) + } + } + } + b.start() + } + +} |