public TrafficLightAnalyzer(ITrafficLightService trafficLightService, List<INumberFilter> numberFilters) { if (trafficLightService == null) { throw new ArgumentNullException("trafficLightService"); } _trafficLightService = trafficLightService; _digitEngine = new DigitEngine(); _numberFilters = numberFilters; }
public TrafficLightAnalyzer(ITrafficLightService trafficLightService, List <INumberFilter> numberFilters) { if (trafficLightService == null) { throw new ArgumentNullException("trafficLightService"); } _trafficLightService = trafficLightService; _digitEngine = new DigitEngine(); _numberFilters = numberFilters; }
public TrafficLight(ITrafficLightService trafficLightService) { machine = new StateMachine <TrafficLightState, TrafficLightTrigger>(TrafficLightState.Red); machine.Configure(TrafficLightState.Red) .OnEntry(() => trafficLightService.Red()) .OnEntry(() => timer.Start(), "Start timer") .OnExit(() => timer.Stop(), "Stop timer") .PermitIf(TrafficLightTrigger.Timer, TrafficLightState.Green, () => IsDay) .PermitIf(TrafficLightTrigger.Timer, TrafficLightState.Blinking, () => !IsDay) .Permit(TrafficLightTrigger.Manual, TrafficLightState.Green) .Permit(TrafficLightTrigger.Blink, TrafficLightState.Blinking); machine.Configure(TrafficLightState.Green) .OnEntry(() => trafficLightService.Green()) .OnEntry(() => timer.Start(), "Start timer") .OnExit(() => timer.Stop(), "Stop timer") .Permit(TrafficLightTrigger.Timer, TrafficLightState.Yellow) .Permit(TrafficLightTrigger.Manual, TrafficLightState.Red) .Permit(TrafficLightTrigger.Blink, TrafficLightState.Blinking); machine.Configure(TrafficLightState.Yellow) .OnEntry(() => timer.Start(), "Start timer") .OnExit(() => timer.Stop(), "Stop timer") .Permit(TrafficLightTrigger.Timer, TrafficLightState.Red) .Permit(TrafficLightTrigger.Blink, TrafficLightState.Blinking); machine.Configure(TrafficLightState.Blinking) .OnEntry(() => timer.Stop()) .Permit(TrafficLightTrigger.Manual, TrafficLightState.Red); machine.OnTransitioned(t => Console.WriteLine($"{t.Trigger} {t.Source} -> {t.Destination}")); timer = new System.Timers.Timer(TimeSpan.FromSeconds(3).TotalMilliseconds); timer.AutoReset = false; timer.Elapsed += Timer_Elapsed; }
public ObservationController(ITrafficLightService trafficLightService) { this.trafficLightService = trafficLightService; }
public SequenceController(ITrafficLightService trafficLightService) { this.trafficLightService = trafficLightService; }