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> /// Run the program /// </summary> /// <param name="path">The path to the sensor log input text file</param> public async Task Run(string path) { try { string output = await _evaluateSensorLogRecords.EvaluateLogFileAsync(path); Console.WriteLine("Devices and classification:"); Console.WriteLine(output); } catch (Exception ex) { _logger.LogError(ex, ex.Message); Console.WriteLine($"Exception: {ex}"); } finally { Console.WriteLine("--- Press Any Key To Continue ---"); Console.ReadKey(true); } }