Ejemplo n.º 1
0
        public TrafficLightAnalyzer(ITrafficLightService trafficLightService, List<INumberFilter> numberFilters)
        {
            if (trafficLightService == null)
            {
                throw new ArgumentNullException("trafficLightService");
            }

            _trafficLightService = trafficLightService;
            _digitEngine = new DigitEngine();
            _numberFilters = numberFilters;
        }
Ejemplo n.º 2
0
        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;
        }
Ejemplo n.º 4
0
 public ObservationController(ITrafficLightService trafficLightService)
 {
     this.trafficLightService = trafficLightService;
 }
Ejemplo n.º 5
0
 public SequenceController(ITrafficLightService trafficLightService)
 {
     this.trafficLightService = trafficLightService;
 }