public async Task RecognizeCorrectSpeedViolation()
        {
            var now             = DateTime.UtcNow;
            var inMemoryStorage = new InMemoryStorage();
            var car             = new Car {
                Nationality = "A", LicensePlate = "X", ActiveSection = new Enter {
                    StartCameraID = "1", Timestamp = now.AddHours(-1d).Ticks
                }
            };
            var camera = new Camera {
                ID = "2", End = new EndCamera {
                    StartCameraID = "1", DistanceFromStart = 100000, MaximumAverageSpeed = 100
                }
            };
            await inMemoryStorage.CreateCarAsync(car);

            await inMemoryStorage.CreateCameraAsync(camera);

            await CheckSectionControl.Run(
                new PlateRead { CameraID = "2", Nationality = "A", LicensePlate = "X", ReadTimestamp = now.Ticks },
                new DebugLogger(""),
                inMemoryStorage);

            Assert.Empty(car.Violations);
            Assert.Null(car.ActiveSection);
            Assert.Equal(1, inMemoryStorage.NumberOfCarUpdates);
        }
        public async Task RecognizeExitWithoutEntry()
        {
            var inMemoryStorage = new InMemoryStorage();
            var car             = new Car {
                Nationality = "A", LicensePlate = "X"
            };
            var camera = new Camera {
                ID = "1", End = new EndCamera()
            };
            await inMemoryStorage.CreateCarAsync(car);

            await inMemoryStorage.CreateCameraAsync(camera);

            await CheckSectionControl.Run(
                new PlateRead { CameraID = "1", Nationality = "A", LicensePlate = "X" },
                new DebugLogger(""),
                inMemoryStorage);

            Assert.NotEmpty(car.Violations);
            Assert.Equal(1, inMemoryStorage.NumberOfCarUpdates);
        }
        public async Task StoresActiveSessionOnEnter()
        {
            var inMemoryStorage = new InMemoryStorage();
            var car             = new Car {
                Nationality = "A", LicensePlate = "X"
            };
            var camera = new Camera {
                ID = "1", Start = new StartCamera()
            };
            await inMemoryStorage.CreateCarAsync(car);

            await inMemoryStorage.CreateCameraAsync(camera);

            await CheckSectionControl.Run(
                new PlateRead { CameraID = "1", Nationality = "A", LicensePlate = "X" },
                new DebugLogger(""),
                inMemoryStorage);

            Assert.Empty(car.Violations);
            Assert.NotNull(car.ActiveSection);
            Assert.Equal(1, inMemoryStorage.NumberOfCarUpdates);
        }