/// <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);
        }
Ejemplo n.º 3
0
        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");
            }
        }
Ejemplo n.º 4
0
        /// <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);
        }