public void Ensure_Car_Is_Successfully_Added_To_Cache()
        {
            Dictionary <int, CarDetails> allCars = new Dictionary <int, CarDetails>();

            CarCoordinatesHandler testEngine = new CarCoordinatesHandler(_fakeMqttClient.Object, allCars);

            testEngine.Process(ExampleCarCoordinates);

            Assert.AreEqual(FirstCarAddedPayload, JsonConvert.SerializeObject(allCars[CarIndex]));
        }
        public void Update_Rank()
        {
            CarDetails carDetails = JsonConvert.DeserializeObject <CarDetails>(ExamplePayload);
            Dictionary <int, CarDetails> allCars = new Dictionary <int, CarDetails> {
                { CarIndex, carDetails }
            };

            carDetails.Rank = PositionTwo;

            CarCoordinatesHandler testEngine = new CarCoordinatesHandler(_fakeMqttClient.Object, allCars);

            testEngine.Process(ExampleCarCoordinates);

            Assert.AreEqual(PositionTwo, allCars[CarIndex].PreviousRank);
            Assert.AreEqual(PositionOne, allCars[CarIndex].Rank);
        }
        public void Ensure_Car_Is_Successfully_Updated()
        {
            CarDetails carDetails = JsonConvert.DeserializeObject <CarDetails>(ExamplePayload);
            Dictionary <int, CarDetails> allCars = new Dictionary <int, CarDetails> {
                { CarIndex, carDetails }
            };

            #region Fix data

            carDetails.CarLocationData       = carDetails.PreviousCarCoordinates;//Reset the Current Car Coordinates to previous one to simulate past
            carDetails.DistancedTraveled    -= 21.1232196676363;
            carDetails.AverageSpeedPerLap[1] = 205.47528685691001;

            #endregion

            CarCoordinatesHandler testEngine = new CarCoordinatesHandler(_fakeMqttClient.Object, allCars);

            testEngine.Process(ExampleCarCoordinates);

            Assert.AreEqual(ExampleCarCoordinates, allCars[CarIndex].CarLocationData.ToString());
        }
        public void Update_Lap_Once_Passing_Finishing_Line()
        {
            CarDetails carDetails = JsonConvert.DeserializeObject <CarDetails>(ExamplePayload);
            Dictionary <int, CarDetails> allCars = new Dictionary <int, CarDetails> {
                { CarIndex, carDetails }
            };

            #region Fix data

            carDetails.CarLocationData       = carDetails.PreviousCarCoordinates;//Reset the Current Car Coordinates to previous one to simulate past
            carDetails.DistancedTraveled    -= 21.1232196676363;
            carDetails.AverageSpeedPerLap[1] = 205.47528685691001;
            carDetails.PreviousLapTime      -= 80000;

            #endregion

            CarCoordinatesHandler testEngine = new CarCoordinatesHandler(_fakeMqttClient.Object, allCars);

            testEngine.Process(ExampleCarCoordinates);

            Assert.AreEqual(FinishLapExamplePayload, JsonConvert.SerializeObject(allCars[CarIndex]));
        }
 /// <summary>
 /// This subsribes to the events published by the Mqtt Broker and handles them
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="mqttMsgPublishEventArgs"></param>
 private void Client_MqttMsgPublishReceived(object sender, MqttMsgPublishEventArgs mqttMsgPublishEventArgs)
 {
     _engine.Process(Encoding.Default.GetString(mqttMsgPublishEventArgs.Message));
 }