public void Remove_Behaviours_From_Behavioural_States() { var fsm = new HierarchicalStateMachine <int, int>(); var stateBehaviour1 = Substitute.For <IStateBehaviour>(); var stateBehaviour2 = Substitute.For <IStateBehaviour>(); fsm.AddWithBehaviours(1, stateBehaviour1, stateBehaviour2); fsm.RemoveBehaviourFrom(1, stateBehaviour1); Assert.IsTrue(fsm.BehaviourCount() == 1); Assert.IsTrue(fsm.BehaviourCountOf(1) == 1); Assert.IsFalse(fsm.ContainsBehaviour(stateBehaviour1)); Assert.IsFalse(fsm.ContainsBehaviourOn(1, stateBehaviour1)); Assert.IsTrue(fsm.ContainsBehaviour(stateBehaviour2)); Assert.IsTrue(fsm.ContainsBehaviourOn(1, stateBehaviour2)); fsm.RemoveBehaviourFrom(1, stateBehaviour2); Assert.IsTrue(fsm.BehaviourCount() == 0); Assert.IsTrue(fsm.BehaviourCountOf(1) == 0); Assert.IsFalse(fsm.ContainsBehaviour(stateBehaviour2)); Assert.IsFalse(fsm.ContainsBehaviourOn(1, stateBehaviour2)); }
public void Do_Nothing_If_User_Tries_To_Add_The_Same_Behaviour_On_The_Same_State_Twice() { var fsm = new HierarchicalStateMachine <int, int>(); var stateBehaviour1 = Substitute.For <IStateBehaviour>(); fsm.AddWithBehaviours(1); fsm.AddBehaviourTo(1, stateBehaviour1); Assert.DoesNotThrow(() => fsm.AddBehaviourTo(1, stateBehaviour1)); Assert.IsTrue(fsm.BehaviourCount() == 1); }
public void Add_Behavioural_States() { var fsm = new HierarchicalStateMachine <int, int>(); var behaviouralState1 = fsm.AddWithBehaviours(1); Assert.IsTrue(fsm.ContainsState(1)); Assert.IsTrue(fsm.GetStateById(1) == behaviouralState1); IStateBehaviour stateBehaviour1 = Substitute.For <IStateBehaviour>(); IStateBehaviour stateBehaviour2 = Substitute.For <IStateBehaviour>(); var behaviouralState2 = fsm.AddWithBehaviours(2, stateBehaviour1, stateBehaviour2); Assert.IsTrue(fsm.ContainsState(2)); Assert.IsTrue(fsm.GetStateById(2) == behaviouralState2); Assert.IsTrue(fsm.ContainsBehaviour(stateBehaviour1)); Assert.IsTrue(fsm.ContainsBehaviour(stateBehaviour2)); Assert.IsTrue(fsm.BehaviourCount() == 2); Assert.IsTrue(fsm.BehaviourCountOf(2) == 2); }