public void verify_permitted_trigger_declarations()
        {
            var config = new StateTaskConfiguration<StateType, TriggerType, TriggerContext>(StateType.Rejected);

            config.Permit(TriggerType.Ignore, StateType.UnderReview);
            config.Permit(TriggerType.Submit, StateType.New);

            Assert.That(config.State, Is.EqualTo(StateType.Rejected));
            Assert.That(config.PermittedTriggers.Where(p => p.Key == TriggerType.Ignore).First().Value, Is.EqualTo(StateType.UnderReview));
            Assert.That(config.PermittedTriggers.Where(p => p.Key == TriggerType.Submit).First().Value, Is.EqualTo(StateType.New));
        }
        public void verify_state_entrance_and_exit_declarations()
        {
            var config = new StateTaskConfiguration<StateType, TriggerType, TriggerContext>(StateType.Rejected);

            config.OnEntry<Task1>();
            config.OnExit<ExitTask3>();

            Assert.That(config.State, Is.EqualTo(StateType.Rejected));
            Assert.That(
                config.StateStepInfos.Where(
                    p =>
                    p.ActionType == WorkflowTaskActionType.Entry &&
                    p.StateStepType == typeof (Task1)).Count(), Is.EqualTo(1));

            Assert.That(
                config.StateStepInfos.Where(
                    p =>
                    p.ActionType == WorkflowTaskActionType.Exit &&
                    p.StateStepType == typeof(ExitTask3)).Count(), Is.EqualTo(1));
        }