diff options
author | Philipp Haller <hallerp@gmail.com> | 2009-05-27 22:58:02 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2009-05-27 22:58:02 +0000 |
commit | e8e1e61177069cdb89e89b3a41459ae19e84e914 (patch) | |
tree | 3506a8ec3921e1a0e5aac95a45bf8db1f642868b /test/files/jvm | |
parent | 359d4609491a10543c08f2e65db0ec0f05b52705 (diff) | |
download | scala-e8e1e61177069cdb89e89b3a41459ae19e84e914.tar.gz scala-e8e1e61177069cdb89e89b3a41459ae19e84e914.tar.bz2 scala-e8e1e61177069cdb89e89b3a41459ae19e84e914.zip |
Added test for #2000.
Diffstat (limited to 'test/files/jvm')
-rw-r--r-- | test/files/jvm/actor-looping.check | 5 | ||||
-rw-r--r-- | test/files/jvm/actor-looping.scala | 27 | ||||
-rw-r--r-- | test/files/jvm/actor-normal-exit.check | 2 | ||||
-rw-r--r-- | test/files/jvm/actor-normal-exit.scala | 26 | ||||
-rw-r--r-- | test/files/jvm/daemon-actor-termination.scala | 12 | ||||
-rw-r--r-- | test/files/jvm/terminateLinked.check | 1 | ||||
-rw-r--r-- | test/files/jvm/terminateLinked.scala | 24 |
7 files changed, 95 insertions, 2 deletions
diff --git a/test/files/jvm/actor-looping.check b/test/files/jvm/actor-looping.check new file mode 100644 index 0000000000..a6f5c2e73a --- /dev/null +++ b/test/files/jvm/actor-looping.check @@ -0,0 +1,5 @@ +received A +received A +received A +received A +received last A diff --git a/test/files/jvm/actor-looping.scala b/test/files/jvm/actor-looping.scala new file mode 100644 index 0000000000..9599adbb2c --- /dev/null +++ b/test/files/jvm/actor-looping.scala @@ -0,0 +1,27 @@ + +import scala.actors.Actor._ + +object Test { + case object A + + def main(args: Array[String]) { + val a = actor { + var cnt = 0 + loop { + react { + case A => + cnt += 1 + if (cnt % 2 != 0) continue + if (cnt < 10) + println("received A") + else { + println("received last A") + exit() + } + } + } + } + + for (i <- 0 until 10) a ! A + } +} diff --git a/test/files/jvm/actor-normal-exit.check b/test/files/jvm/actor-normal-exit.check new file mode 100644 index 0000000000..6865f83b90 --- /dev/null +++ b/test/files/jvm/actor-normal-exit.check @@ -0,0 +1,2 @@ +Done +slave exited for reason 'normal diff --git a/test/files/jvm/actor-normal-exit.scala b/test/files/jvm/actor-normal-exit.scala new file mode 100644 index 0000000000..40dc7b7da4 --- /dev/null +++ b/test/files/jvm/actor-normal-exit.scala @@ -0,0 +1,26 @@ + +import scala.actors.{Actor, Exit} + +object Test { + object Master extends Actor { + trapExit = true + def act() { + Slave.start() + react { + case Exit(from, reason) => + println("slave exited for reason " + reason) + } + } + } + + object Slave extends Actor { + def act() { + link(Master) + println("Done") + } + } + + def main(args: Array[String]) { + Master.start() + } +} diff --git a/test/files/jvm/daemon-actor-termination.scala b/test/files/jvm/daemon-actor-termination.scala index 322efbe212..c3dd58e253 100644 --- a/test/files/jvm/daemon-actor-termination.scala +++ b/test/files/jvm/daemon-actor-termination.scala @@ -1,8 +1,16 @@ -import scala.actors.DaemonActor +import scala.actors.{Actor, DefaultExecutorScheduler} -/* Test that a DaemonActor that hasn't finished does not prevent termination */ +/* Test that a daemon Actor that hasn't finished does not prevent termination */ + +trait DaemonActor extends Actor { + override def scheduler = + Test.daemonSched +} object Test { + val daemonSched = + new DefaultExecutorScheduler(true) + class MyDaemon extends DaemonActor { def act() { println("I'm going to make you wait.") diff --git a/test/files/jvm/terminateLinked.check b/test/files/jvm/terminateLinked.check new file mode 100644 index 0000000000..a965a70ed4 --- /dev/null +++ b/test/files/jvm/terminateLinked.check @@ -0,0 +1 @@ +Done diff --git a/test/files/jvm/terminateLinked.scala b/test/files/jvm/terminateLinked.scala new file mode 100644 index 0000000000..2a3b7fb49e --- /dev/null +++ b/test/files/jvm/terminateLinked.scala @@ -0,0 +1,24 @@ +import scala.actors.Actor +import Actor._ + +object Test { + def main(args: Array[String]) { + val a = actor { + for (_ <- 1 to 10) + receive { + case b: Actor => link(b) + } + throw new Exception + } + + for (_ <- 1 to 10) + actor { + a ! self + react { + case _ => + } + } + + println("Done") + } +} |