Esempio n. 1
0
        public void Constructor_sets_properties()
        {
            SaleState StateAccessor(Sale sale) => sale.State;
            void StateMutator(Sale sale, SaleState newState) => sale.State = newState;

            const SaleState toState = SaleState.ChangeDue;

            var sut = new StateConfigurationBaseTester <Sale, SaleState, SaleEvent>(StateAccessor
                                                                                    , StateMutator
                                                                                    , toState);

            Assert.Equal(StateAccessor, sut.StateAccessor);
            Assert.Equal(StateMutator, sut.StateMutator);
            Assert.Equal(toState, sut.State);
        }
Esempio n. 2
0
        public void AddTransition_adds_transition()
        {
            var transition = new StateTransition <Sale, SaleState, SaleEvent>(stateAccessor: sale => sale.State
                                                                              , stateMutator: (sale, newState) => sale.State = newState
                                                                              , toState: SaleState.Complete
                                                                              , name: "testTransition"
                                                                              , priority: 1
                                                                              , condition: _ => true);
            var sut = new StateConfigurationBaseTester <Sale, SaleState, SaleEvent>(stateAccessor: sale => sale.State
                                                                                    , stateMutator: (sale, newState) => sale.State = newState
                                                                                    , state: SaleState.Open);

            sut.AddTransition(SaleEvent.AddItem, transition);

            Assert.True(sut.ContainsTransition(SaleEvent.AddItem, transition));
        }
Esempio n. 3
0
        public void AddTransition_throws_InvalidOperationException_if_transition_for_same_trigger_and_priority()
        {
            var transition = new StateTransition <Sale, SaleState, SaleEvent>(stateAccessor: sale => sale.State
                                                                              , stateMutator: (sale, newState) => sale.State = newState
                                                                              , toState: SaleState.Complete
                                                                              , name: "testTransition"
                                                                              , priority: 1
                                                                              , condition: _ => true);
            var sut = new StateConfigurationBaseTester <Sale, SaleState, SaleEvent>(stateAccessor: sale => sale.State
                                                                                    , stateMutator: (sale, newState) => sale.State = newState
                                                                                    , state: SaleState.Open);

            //Succeeds first time
            sut.AddTransition(SaleEvent.AddItem, transition);
            Assert.True(sut.ContainsTransition(SaleEvent.AddItem, transition));

            Assert.Throws <InvalidOperationException>(() => sut.AddTransition(SaleEvent.AddItem, transition));
        }