summaryrefslogtreecommitdiff
path: root/test/files/jvm/actor-getstate.scala
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2010-03-08 15:01:53 +0000
committerPhilipp Haller <hallerp@gmail.com>2010-03-08 15:01:53 +0000
commit57261cf375a8442a267b918ed582af526f8491fa (patch)
tree7198dd7ee431697803bf865ccb7343aa2f939664 /test/files/jvm/actor-getstate.scala
parent13f24056a444fd5038cebdb294a0959bfe979492 (diff)
downloadscala-57261cf375a8442a267b918ed582af526f8491fa.tar.gz
scala-57261cf375a8442a267b918ed582af526f8491fa.tar.bz2
scala-57261cf375a8442a267b918ed582af526f8491fa.zip
Reactor now has type parameter.
Diffstat (limited to 'test/files/jvm/actor-getstate.scala')
-rw-r--r--test/files/jvm/actor-getstate.scala73
1 files changed, 73 insertions, 0 deletions
diff --git a/test/files/jvm/actor-getstate.scala b/test/files/jvm/actor-getstate.scala
new file mode 100644
index 0000000000..9de3247653
--- /dev/null
+++ b/test/files/jvm/actor-getstate.scala
@@ -0,0 +1,73 @@
+import scala.actors.{Reactor, Actor, TIMEOUT}
+
+object Test {
+
+ def assert(cond: => Boolean) {
+ if (!cond)
+ println("FAIL")
+ }
+
+ def main(args: Array[String]) {
+ val a = new Reactor[Any] {
+ def act() {
+ assert(getState == Actor.State.Runnable)
+ react {
+ case 'go =>
+ println("OK")
+ }
+ }
+ }
+ assert(a.getState == Actor.State.New)
+
+ a.start()
+ Thread.sleep(100)
+ assert(a.getState == Actor.State.Suspended)
+
+ a ! 'go
+ Thread.sleep(100)
+ assert(a.getState == Actor.State.Terminated)
+
+ val b = new Actor {
+ def act() {
+ assert(getState == Actor.State.Runnable)
+ react {
+ case 'go =>
+ reactWithin(100000) {
+ case TIMEOUT =>
+ case 'go =>
+ receive {
+ case 'go =>
+ }
+ receiveWithin(100000) {
+ case TIMEOUT =>
+ case 'go =>
+ println("OK")
+ }
+ }
+ }
+ }
+ }
+ assert(b.getState == Actor.State.New)
+
+ b.start()
+ Thread.sleep(100)
+ assert(b.getState == Actor.State.Suspended)
+
+ b ! 'go
+ Thread.sleep(100)
+ assert(b.getState == Actor.State.TimedSuspended)
+
+ b ! 'go
+ Thread.sleep(100)
+ assert(b.getState == Actor.State.Blocked)
+
+ b ! 'go
+ Thread.sleep(100)
+ assert(b.getState == Actor.State.TimedBlocked)
+
+ b ! 'go
+ Thread.sleep(100)
+ assert(b.getState == Actor.State.Terminated)
+ }
+
+}