diff options
author | Philipp Haller <hallerp@gmail.com> | 2010-03-08 15:01:53 +0000 |
---|---|---|
committer | Philipp Haller <hallerp@gmail.com> | 2010-03-08 15:01:53 +0000 |
commit | 57261cf375a8442a267b918ed582af526f8491fa (patch) | |
tree | 7198dd7ee431697803bf865ccb7343aa2f939664 /test/files/jvm/actor-getstate.scala | |
parent | 13f24056a444fd5038cebdb294a0959bfe979492 (diff) | |
download | scala-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.scala | 73 |
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) + } + +} |