public void ErrantEnd()
        {
            var group = new TestStateGroup();
            var state = new TestState();

            group.Entry = state;

            group.Start();
            group.Update();
            group.End();
            group.End();

            Assert.AreEqual(1, state.EndIterations);
        }
        public void SubstateLifecycleRestart()
        {
            var group = new TestStateGroup();
            var state = new TestState();

            group.Entry = state;

            group.Start();
            group.Update();
            group.End();
            group.Start();
            group.Update();
            group.End();

            Assert.AreEqual(2, state.StartIterations);
            Assert.AreEqual(2, state.UpdateIterations);
            Assert.AreEqual(2, state.EndIterations);
        }
        public void EndWithoutStart()
        {
            var group = new TestStateGroup();
            var state = new TestState();

            group.Entry = state;

            group.End();

            Assert.AreEqual(0, state.StartIterations);
            Assert.AreEqual(0, state.UpdateIterations);
            Assert.AreEqual(0, state.EndIterations);
        }
        public void LifecycleEvents()
        {
            var group = new TestStateGroup();
            var state = new TestState();

            group.Entry = state;

            group.Start();
            group.Update();
            group.End();

            Assert.AreEqual(1, group.StartIterations);
            Assert.AreEqual(1, state.UpdateIterations);
            Assert.AreEqual(1, group.EndIterations);
        }