public void Test_StateMachine_Graph() { var sut = new TestStateMachine(); var invalidNode = sut.AddState(TestEnum.Invalid); Assert.AreEqual(invalidNode, sut.NodeForState(TestEnum.Invalid)); Assert.AreEqual(1, sut.nodes.Count); var inputs1 = new List <string>() { "test1" }; sut.ConnectStates(TestEnum.Invalid, inputs1, TestEnum.Test1); var inputs2 = new List <string>() { "test2" }; sut.ConnectStates(TestEnum.Test1, inputs2, TestEnum.Test2); Assert.AreEqual(3, sut.nodes.Count); sut.State = TestEnum.Invalid; sut.OnInput("test2"); Assert.AreEqual(TestEnum.Invalid, sut.State); sut.OnInput("test1"); Assert.AreEqual(TestEnum.Test1, sut.State); sut.OnInput("test2"); Assert.AreEqual(TestEnum.Test2, sut.State); }