public LambdaStateChangedHandlerTests() { _config = new MachineConfiguration<TestArgs>(); var args = new TestArgs(); var stateProvider = new ScanningStateProvider<TestArgs>(); _machine = new StateMachine<TestArgs>(_config, stateProvider, args); }
public static StateMachine<CreditRequest> Create(CreditRequest request) { var provider = new ScanningStateProvider<CreditRequest>(); var config = new MachineConfiguration<CreditRequest>(); config.OnStateChange( reset: (sender, args) => args.Switches.State = args.Next.GetType(), enter: (sender, args) => args.Switches.State = args.Next.GetType() ); var machine = new StateMachine<CreditRequest>(config, provider, request); machine.ResetTo(request.State); return machine; }
public void When_finding_custom_states() { var scanner = new ScanningStateProvider<CreditRequest>(); var provider = new MappingStateProvider(scanner); var config = new MachineConfiguration<CreditRequest>(); config.OnStateChange( reset: (sender, args) => args.Switches.Progress = ((CustomState<CreditRequest>)args.Next).Type, enter: (sender, args) => args.Switches.Progress = ((CustomState<CreditRequest>)args.Next).Type ); var request = LoadFromDatabase(); var machine = new StateMachine<CreditRequest>(provider, request); machine.ResetTo(provider.StateFrom(request.Progress).GetType()); machine.CurrentState.ShouldBeOfType<Approved>(); }