public void FluentStateMachine_AvailableStates_ValidParms_CallsReturnsMachineAvailable()
        {
            var machineMock = new Mock <IStateMachine <StubStateModel> >();
            var state1      = new State <StubStateModel>("s1");
            var state2      = new State <StubStateModel>("s2");
            var state3      = new State <StubStateModel>("s3");

            var allStates = new List <State <StubStateModel> >();

            allStates.Add(state1);
            allStates.Add(state2);
            allStates.Add(state3);

            var model = new StubStateModel();


            machineMock.Setup(m => m.AvailableStates(model)).Returns(allStates).Verifiable();

            var fluentMachine = new FluentStateMachine <StubStateModel>(
                machineMock.Object,
                allStates,
                state2,
                null,
                null,
                null);

            var result = fluentMachine.AvailableStates(model);

            Assert.Same(allStates, result);
            machineMock.VerifyAll();
        }
        public void FluentStateMachine_AvailableStates_ValidParms_CallsReturnsMachineAvailable()
        {
            var machineMock = new Mock<IStateMachine<StubStateModel>>();
            var state1 = new State<StubStateModel>("s1");
            var state2 = new State<StubStateModel>("s2");
            var state3 = new State<StubStateModel>("s3");

            var allStates = new List<State<StubStateModel>>();
            allStates.Add(state1);
            allStates.Add(state2);
            allStates.Add(state3);

            var model = new StubStateModel();

            machineMock.Setup(m => m.AvailableStates(model)).Returns(allStates).Verifiable();

            var fluentMachine = new FluentStateMachine<StubStateModel>(
                machineMock.Object,
                allStates,
                state2,
                null,
                null,
                null);

            var result = fluentMachine.AvailableStates(model);

            Assert.Same(allStates, result);
            machineMock.VerifyAll();
        }
        public void FluentStateMachine_AvailableStates_NullModel_ThrowsNullEx()
        {
            var machineMock = new Mock<IStateMachine<StubStateModel>>();
            var state1 = new State<StubStateModel>("s1");
            var state2 = new State<StubStateModel>("s2");
            var state3 = new State<StubStateModel>("s3");

            var allStates = new List<State<StubStateModel>>();
            allStates.Add(state1);
            allStates.Add(state2);
            allStates.Add(state3);

            var fluentMachine = new FluentStateMachine<StubStateModel>(
                machineMock.Object,
                allStates,
                state2,
                null,
                null,
                null);

            Assert.Throws<ArgumentNullException>(() =>
                fluentMachine.AvailableStates(null));
        }
        public void FluentStateMachine_AvailableStates_NullModel_ThrowsNullEx()
        {
            var machineMock = new Mock <IStateMachine <StubStateModel> >();
            var state1      = new State <StubStateModel>("s1");
            var state2      = new State <StubStateModel>("s2");
            var state3      = new State <StubStateModel>("s3");

            var allStates = new List <State <StubStateModel> >();

            allStates.Add(state1);
            allStates.Add(state2);
            allStates.Add(state3);

            var fluentMachine = new FluentStateMachine <StubStateModel>(
                machineMock.Object,
                allStates,
                state2,
                null,
                null,
                null);

            Assert.Throws <ArgumentNullException>(() =>
                                                  fluentMachine.AvailableStates(null));
        }