|
Akka/Scala example source code file (TestFSMRefSpec.scala)
The TestFSMRefSpec.scala Akka example source code
/**
* Copyright (C) 2009-2014 Typesafe Inc. <http://www.typesafe.com>
*/
package akka.testkit
import language.postfixOps
import org.scalatest.Matchers
import org.scalatest.{ BeforeAndAfterEach, WordSpec }
import akka.actor._
import scala.concurrent.duration._
@org.junit.runner.RunWith(classOf[org.scalatest.junit.JUnitRunner])
class TestFSMRefSpec extends AkkaSpec {
"A TestFSMRef" must {
"allow access to state data" in {
val fsm = TestFSMRef(new Actor with FSM[Int, String] {
startWith(1, "")
when(1) {
case Event("go", _) ⇒ goto(2) using "go"
case Event(StateTimeout, _) ⇒ goto(2) using "timeout"
}
when(2) {
case Event("back", _) ⇒ goto(1) using "back"
}
}, "test-fsm-ref-1")
fsm.stateName should be(1)
fsm.stateData should be("")
fsm ! "go"
fsm.stateName should be(2)
fsm.stateData should be("go")
fsm.setState(stateName = 1)
fsm.stateName should be(1)
fsm.stateData should be("go")
fsm.setState(stateData = "buh")
fsm.stateName should be(1)
fsm.stateData should be("buh")
fsm.setState(timeout = 100 millis)
within(80 millis, 500 millis) {
awaitCond(fsm.stateName == 2 && fsm.stateData == "timeout")
}
}
"allow access to timers" in {
val fsm = TestFSMRef(new Actor with FSM[Int, Null] {
startWith(1, null)
when(1) {
case x ⇒ stay
}
}, "test-fsm-ref-2")
fsm.isTimerActive("test") should be(false)
fsm.setTimer("test", 12, 10 millis, true)
fsm.isTimerActive("test") should be(true)
fsm.cancelTimer("test")
fsm.isTimerActive("test") should be(false)
}
}
}
Other Akka source code examplesHere is a short list of links related to this Akka TestFSMRefSpec.scala source code file: |
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.