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); }
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)); }
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)); }