akka.testkit
Class TestFSMRef<S,D,T extends Actor>

java.lang.Object
  extended by akka.actor.LocalActorRef
      extended by akka.testkit.TestActorRef<scala.runtime.Nothing$>
          extended by akka.testkit.TestFSMRef<S,D,T>

public class TestFSMRef<S,D,T extends Actor>
extends TestActorRef<scala.runtime.Nothing$>

This is a specialised form of the TestActorRef with support for querying and setting the state of a FSM. Use a LoggingFSM with this class if you also need to inspect event traces.


 val fsm = TestFSMRef(new Actor with LoggingFSM[Int, Null] {
     override def logDepth = 12
     startWith(1, null)
     when(1) {
       case Ev("hello") => goto(2)
     }
     when(2) {
       case Ev("world") => goto(1)
     }
   }
 assert (fsm.stateName == 1)
 fsm ! "hallo"
 assert (fsm.stateName == 2)
 assert (fsm.underlyingActor.getLog == IndexedSeq(FSMLogEntry(1, null, "hallo")))
 

Since:
1.2

Constructor Summary
TestFSMRef(akka.actor.ActorSystemImpl system, DispatcherPrerequisites _prerequisites, Props props, akka.actor.InternalActorRef supervisor, java.lang.String name, scala.Predef.$less$colon$less<T,FSM<S,D>> ev)
           
 
Method Summary
static
<S,D,T extends Actor>
TestFSMRef<S,D,T>
apply(scala.Function0<T> factory, scala.Predef.$less$colon$less<T,FSM<S,D>> ev, ActorSystem system)
           
static
<S,D,T extends Actor>
TestFSMRef<S,D,T>
apply(scala.Function0<T> factory, java.lang.String name, scala.Predef.$less$colon$less<T,FSM<S,D>> ev, ActorSystem system)
           
 void cancelTimer(java.lang.String name)
          Proxy for FSM.cancelTimer.
 void setState(S stateName, D stateData, scala.concurrent.duration.FiniteDuration timeout, scala.Option<FSM.Reason> stopReason)
          Change FSM state; any value left out defaults to the current FSM state (timeout defaults to None).
 void setTimer(java.lang.String name, java.lang.Object msg, scala.concurrent.duration.FiniteDuration timeout, boolean repeat)
          Proxy for FSM.setTimer.
 D stateData()
          Get current state data of this FSM.
 S stateName()
          Get current state name of this FSM.
 
Methods inherited from class akka.testkit.TestActorRef
apply, apply, apply, apply, apply, apply, apply, create, newActorCell, receive, receive, toString, underlyingActor, unwatch, watch
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

TestFSMRef

public TestFSMRef(akka.actor.ActorSystemImpl system,
                  DispatcherPrerequisites _prerequisites,
                  Props props,
                  akka.actor.InternalActorRef supervisor,
                  java.lang.String name,
                  scala.Predef.$less$colon$less<T,FSM<S,D>> ev)
Method Detail

apply

public static <S,D,T extends Actor> TestFSMRef<S,D,T> apply(scala.Function0<T> factory,
                                                            scala.Predef.$less$colon$less<T,FSM<S,D>> ev,
                                                            ActorSystem system)

apply

public static <S,D,T extends Actor> TestFSMRef<S,D,T> apply(scala.Function0<T> factory,
                                                            java.lang.String name,
                                                            scala.Predef.$less$colon$less<T,FSM<S,D>> ev,
                                                            ActorSystem system)

stateName

public S stateName()
Get current state name of this FSM.


stateData

public D stateData()
Get current state data of this FSM.


setState

public void setState(S stateName,
                     D stateData,
                     scala.concurrent.duration.FiniteDuration timeout,
                     scala.Option<FSM.Reason> stopReason)
Change FSM state; any value left out defaults to the current FSM state (timeout defaults to None). This method is directly equivalent to a corresponding transition initiated from within the FSM, including timeout and stop handling.


setTimer

public void setTimer(java.lang.String name,
                     java.lang.Object msg,
                     scala.concurrent.duration.FiniteDuration timeout,
                     boolean repeat)
Proxy for FSM.setTimer.


cancelTimer

public void cancelTimer(java.lang.String name)
Proxy for FSM.cancelTimer.