@Test
public void testGetStateOfType() {
final StateA a = new StateA();
final StateB b = new StateB();
final StateC c = new StateC();
final StateMachineBuilder<Events, Context> smb = StateMachine.create(a)
.addTransition(a, Events.START, b)
.addTransition(b, Events.START, c)
.addTransition(c, Events.START, a);
if (explicitRecursiveTransitions) {
smb.explicitRecursiveTransitions();
}
fsm = smb.build();
final State<Events, Context> first = fsm.getStates().iterator().next();
assertEquals(first, fsm.getStateOfType(Object.class));
assertEquals(b, fsm.getStateOfType(StateB.class));
assertEquals(c, fsm.getStateOfType(StateC.class));
boolean fail = false;
try {
fsm.getStateOfType(Enum.class);
} catch (final IllegalArgumentException e) {
fail = true;
}
assertTrue(fail);
}