public void When_reseting_state_and_no_action_is_specified()
        {
            var handler = new LambdaStateChangedHandler<TestArgs>();
            _config.OnStateChange(handler);

            _machine.ResetTo<FirstState>();
        }
        public void When_changing_state_and_an_onleave_action_is_specified()
        {
            var leaveCalled = 0;
            var handler = new LambdaStateChangedHandler<TestArgs>();
            handler.OnLeave = (s, a) => { leaveCalled++; };

            _config.OnStateChange(handler);
            _machine.ResetTo<FirstState>();

            _machine.TransitionTo<SecondState>();
            leaveCalled.ShouldBe(1);
        }
        public void When_reseting_state_and_there_is_an_action_specified()
        {
            var resetCalled = 0;
            var handler = new LambdaStateChangedHandler<TestArgs>();
            handler.OnReset = (s, a) => { resetCalled++; };

            _config.OnStateChange(handler);

            _machine.ResetTo<FirstState>();

            resetCalled.ShouldBe(1);
        }