public void ChangeStateTest() { StateMachine sm = new StateMachine(); // TODO: 初始化为适当的值 Assert.IsNull(sm.GetState()); var state1 = new State1(); //测试基本changestate sm.ChangeState(state1); Assert.AreSame(state1, sm.GetState()); Assert.AreEqual(state1.ToString(), "S1Enter"); //测试对同一个state设置 sm.ChangeState(state1); Assert.AreSame(state1, sm.GetState()); Assert.AreEqual(state1.ToString(), "S1Enter"); sm.Update(); var state2 = sm.GetState(); Assert.AreNotSame(state1, state2); Assert.AreEqual(state1.ToString(), "S1"); Assert.AreEqual(state2.ToString(), "S2Enter"); }
public RepeatStateTree2(Player startPlayer = Player.Max) { A.CallTo(() => EndState1.ToString()).Returns(nameof(EndState1)); A.CallTo(() => State1.ToString()).Returns(nameof(State1)); A.CallTo(() => State2.ToString()).Returns(nameof(State2)); A.CallTo(() => State2.ToString()).Returns(nameof(State3)); A.CallTo(() => RootState.ToString()).Returns(nameof(RootState)); A.CallTo(() => RootState.Turn).Returns(startPlayer); A.CallTo(() => State1.Turn).Returns(startPlayer.GetReversePlayer()); A.CallTo(() => State2.Turn).Returns(startPlayer.GetReversePlayer()); A.CallTo(() => State3.Turn).Returns(startPlayer); A.CallTo(() => EndState1.Turn).Returns(startPlayer.GetReversePlayer()); RootState.SetNeigbors(State1, State2); EndState1.SetAsEndState(); State1.SetNeigbor(State3); State2.SetNeigbor(State3); State3.SetNeigbor(EndState1); }