private static ITrafficLightService CreateService()
        {
            var digitPredictor = new DigitPredictor(new BrokenSectionsExpert());
            var timePredictor  = new TrafficLightTimePredictor(digitPredictor);
            var storage        = new EfStorage(new Context(CreateOptions()));

            return(new TrafficLightService(storage, new BrokenSectionsExpert(), timePredictor));
        }
        private TrafficLightDigits[] Test(Light[] lights, List <Observation> storage)
        {
            var predictor = new TrafficLightTimePredictor(new DigitPredictor(new BrokenSectionsExpert()));

            var sequence = Guid.NewGuid();

            TrafficLightDigits[] prediction = null;

            foreach (var light in lights)
            {
                prediction = predictor.Predict(light, storage.ToArray());

                var count = storage.Count;

                var observation = new Observation(sequence, light, prediction.Select(x => x - count).ToArray());

                storage.Add(observation);
            }

            return(prediction);
        }