/// <summary> /// Generates a JSON string representing the sensor log quality control evaluation /// </summary> /// <param name="validateSensorLogModel">The validated sensor log model</param> /// <returns>A JSON string representing the sensor log quality control evaluation</returns> private string GenerateOutput(ValidateSensorLogModel validateSensorLogModel) { Dictionary <string, string> results = new Dictionary <string, string>(); foreach (ThermometerResultModel thermometerResultModel in validateSensorLogModel.ThermometerResults) { results.Add(thermometerResultModel.SensorName, thermometerResultModel.ThermometerStatus.GetDescription().ToLower()); } foreach (HumidityResultModel humidityResultModel in validateSensorLogModel.HumidityResults) { results.Add(humidityResultModel.SensorName, humidityResultModel.HumidityStatus.GetDescription().ToLower()); } foreach (MonoxideResultModel monoxideResultModel in validateSensorLogModel.MonoxideResults) { results.Add(monoxideResultModel.SensorName, monoxideResultModel.MonoxideStatus.GetDescription().ToLower()); } JsonSerializerOptions options = new JsonSerializerOptions { WriteIndented = true }; string jsonString = JsonSerializer.Serialize(results, options); return(jsonString); }
public void ValidateSensorLogRecordsTest(SensorLogModel sensorLogModel, ValidateSensorLogModel expected) { // Arrange // Act ValidateSensorLogModel actual = _validateSensorRecordRepository.ValidateSensorLogRecords(sensorLogModel); // Assert actual .Should() .NotBeNull() .And .Equals(expected); }
public async Task EvaluateLogFileTest(string path, ValidateSensorLogModel validateSensorLogModel, string expected) { // Arrange _mediatr .Setup(x => x.Send(It.IsAny <ParseSensorRecordCommand>(), default)) .ReturnsAsync(new CommandResult <SensorLogModel>()); _mediatr .Setup(x => x.Send(It.IsAny <ValidateSensorRecordCommand>(), default)) .ReturnsAsync(new CommandResult <ValidateSensorLogModel> { Result = validateSensorLogModel }); // Act string actual = await _evaluateSensorLogRecords.EvaluateLogFileAsync(path); // Assert using (new AssertionScope()) { actual .Should() .NotBeNull() .And .BeEquivalentTo(expected); IDictionary <string, string> actualDictionary = JsonSerializer.Deserialize <Dictionary <string, string> >(actual); actualDictionary .Should() .Contain("temp-1", "precise") .And .Contain("temp-2", "ultra precise") .And .Contain("hum-1", "keep") .And .Contain("hum-2", "discard") .And .Contain("mon-1", "keep") .And .Contain("mon-2", "discard"); } }
/// <summary> /// Reads the sensors and the log records and generates the quality control evaluation for the sensors /// </summary> /// <param name="sensorLogModel">The sensor log input model</param> /// <exception cref="ArgumentNullException">sensorLogModel is null or sensorLogModel.ReverenceValues is null</exception> /// <returns>A model representing the sensor log quality control evaluation</returns> public ValidateSensorLogModel ValidateSensorLogRecords(SensorLogModel sensorLogModel) { if (sensorLogModel == null) { _logger.LogError($"{Messages.NullValue} (Parameter '{nameof(sensorLogModel)}')"); throw new ArgumentNullException(nameof(sensorLogModel), Messages.NullValue); } if (sensorLogModel.ReferenceValues == null) { _logger.LogError($"{Messages.NullValue} (Parameter '{nameof(sensorLogModel.ReferenceValues)}')"); throw new ArgumentNullException(nameof(sensorLogModel.ReferenceValues), Messages.NullValue); } ValidateSensorLogModel resultModel = new ValidateSensorLogModel { HumidityResults = EvaluateHumidityLogRecords(sensorLogModel.HumidityReadings, sensorLogModel.ReferenceValues.HumidityReferenceValue), MonoxideResults = EvaluateMonoxideLogRecords(sensorLogModel.MonoxideReadings, sensorLogModel.ReferenceValues.MonoxideReferenceValue), ThermometerResults = EvaluateThermometerLogRecords(sensorLogModel.ThermometerReadings, sensorLogModel.ReferenceValues.ThermometerReferenceValue) }; return(resultModel); }