Fix interface and restore gRPC tests
This commit is contained in:
parent
f13a918af3
commit
beeb6d22a2
7 changed files with 74 additions and 43 deletions
|
@ -15,7 +15,7 @@ namespace NucuCar.Sensors.EnvironmentSensor
|
||||||
/// Abstraction for the BME680 sensor.
|
/// Abstraction for the BME680 sensor.
|
||||||
/// See: https://www.bosch-sensortec.com/bst/products/all_products/bme680
|
/// See: https://www.bosch-sensortec.com/bst/products/all_products/bme680
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Bme680Sensor : IDisposable, ITelemeter
|
public class Bme680Sensor : IDisposable, ITelemeter, ISensor<Bme680Sensor>
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private I2cConnectionSettings _i2CSettings;
|
private I2cConnectionSettings _i2CSettings;
|
||||||
|
@ -42,15 +42,16 @@ namespace NucuCar.Sensors.EnvironmentSensor
|
||||||
_logger?.LogInformation("BME680 Sensor is disabled!");
|
_logger?.LogInformation("BME680 Sensor is disabled!");
|
||||||
_sensorStateEnum = SensorStateEnum.Disabled;
|
_sensorStateEnum = SensorStateEnum.Disabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Object = this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO Make more generic, Add interface and remove virtual
|
// TODO Make more generic
|
||||||
public virtual EnvironmentSensorMeasurement GetMeasurement()
|
public virtual EnvironmentSensorMeasurement GetMeasurement()
|
||||||
{
|
{
|
||||||
return _lastMeasurement;
|
return _lastMeasurement;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Add interface and remove virtual
|
|
||||||
public virtual SensorStateEnum GetState()
|
public virtual SensorStateEnum GetState()
|
||||||
{
|
{
|
||||||
return _sensorStateEnum;
|
return _sensorStateEnum;
|
||||||
|
@ -135,5 +136,7 @@ namespace NucuCar.Sensors.EnvironmentSensor
|
||||||
|
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Bme680Sensor Object { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -36,7 +36,7 @@ namespace NucuCar.Sensors.EnvironmentSensor
|
||||||
|
|
||||||
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
|
||||||
{
|
{
|
||||||
if (_serviceEnabled)
|
if (!_serviceEnabled)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,7 @@ using NucuCar.Domain.Telemetry;
|
||||||
|
|
||||||
namespace NucuCar.Sensors
|
namespace NucuCar.Sensors
|
||||||
{
|
{
|
||||||
public interface ISensor<out TSensor> where TSensor : class, new()
|
public interface ISensor<out TSensor> where TSensor : class, ITelemeter
|
||||||
{
|
{
|
||||||
TSensor Object { get; }
|
TSensor Object { get; }
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,4 @@
|
||||||
using Microsoft.AspNetCore.Hosting;
|
using Microsoft.AspNetCore.Hosting;
|
||||||
using Microsoft.Extensions.Configuration;
|
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using Microsoft.Extensions.Hosting;
|
using Microsoft.Extensions.Hosting;
|
||||||
using NucuCar.Sensors.EnvironmentSensor;
|
using NucuCar.Sensors.EnvironmentSensor;
|
||||||
|
@ -23,8 +22,7 @@ namespace NucuCar.Sensors
|
||||||
|
|
||||||
// Singletons
|
// Singletons
|
||||||
services.AddSingleton<SensorTelemetry>();
|
services.AddSingleton<SensorTelemetry>();
|
||||||
services.AddSingleton<Bme680Sensor>();
|
services.AddSingleton<ISensor<Bme680Sensor>, Bme680Sensor>();
|
||||||
services.AddSingleton<ISensor<Bme680Sensor>>();
|
|
||||||
|
|
||||||
// Workers
|
// Workers
|
||||||
services.AddHostedService<TelemetryWorker>();
|
services.AddHostedService<TelemetryWorker>();
|
||||||
|
|
9
NucuCar.Sensors/Sensor.cs
Normal file
9
NucuCar.Sensors/Sensor.cs
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
using NucuCar.Domain.Telemetry;
|
||||||
|
|
||||||
|
namespace NucuCar.Sensors
|
||||||
|
{
|
||||||
|
public class Sensor<T> : ISensor<T> where T : class, ITelemeter
|
||||||
|
{
|
||||||
|
public T Object { get; }
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,7 +1,6 @@
|
||||||
using System;
|
|
||||||
using Grpc.Core;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Moq;
|
using Moq;
|
||||||
|
using NucuCar.Sensors;
|
||||||
using NucuCar.Sensors.EnvironmentSensor;
|
using NucuCar.Sensors.EnvironmentSensor;
|
||||||
using NucuCarSensorsProto;
|
using NucuCarSensorsProto;
|
||||||
using Xunit;
|
using Xunit;
|
||||||
|
@ -9,47 +8,47 @@ using Xunit.Abstractions;
|
||||||
|
|
||||||
namespace NucuCar.UnitTests.NucuCar.Sensors.Tests.EnvironmentSensor.Tests
|
namespace NucuCar.UnitTests.NucuCar.Sensors.Tests.EnvironmentSensor.Tests
|
||||||
{
|
{
|
||||||
public class Bme680GrpcServiceTest
|
public partial class Bme680GrpcServiceTest
|
||||||
{
|
{
|
||||||
private readonly ITestOutputHelper _testOutputHelper;
|
private readonly ITestOutputHelper _testOutputHelper;
|
||||||
private readonly Mock<ILogger<Bme680GrpcService>> _mockLogger;
|
private readonly Mock<ILogger<Bme680GrpcService>> _mockLogger;
|
||||||
private readonly Mock<Bme680Sensor> _mockSensor;
|
private readonly Mock<ISensor<Bme680Sensor>> _mockSensor;
|
||||||
|
|
||||||
|
|
||||||
public Bme680GrpcServiceTest(ITestOutputHelper testOutputHelper)
|
public Bme680GrpcServiceTest(ITestOutputHelper testOutputHelper)
|
||||||
{
|
{
|
||||||
_testOutputHelper = testOutputHelper;
|
_testOutputHelper = testOutputHelper;
|
||||||
_mockLogger = new Mock<ILogger<Bme680GrpcService>>();
|
_mockLogger = new Mock<ILogger<Bme680GrpcService>>();
|
||||||
_mockSensor = new Mock<Bme680Sensor>();
|
_mockSensor = new Mock<ISensor<Bme680Sensor>>();
|
||||||
|
_mockSensor.Setup(ms => ms.Object).Returns(new Mock<TestBme680Sensor>().Object);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// [Fact]
|
[Fact]
|
||||||
// public void Test_GetSensorState()
|
public void Test_GetSensorState()
|
||||||
// {
|
{
|
||||||
// var service = new Bme680GrpcService(_mockLogger.Object, _mockSensor.Object);
|
var service = new Bme680GrpcService(_mockLogger.Object, _mockSensor.Object);
|
||||||
// var result = service.GetSensorState(null, null).Result;
|
var result = service.GetSensorState(null, null).Result;
|
||||||
//
|
|
||||||
// // Default sensor state is error
|
// Default sensor state is error
|
||||||
// Assert.Equal(SensorStateEnum.Error, result.State);
|
Assert.Equal(SensorStateEnum.Error, result.State);
|
||||||
//
|
|
||||||
// // Verify that the sensor get state method is called.
|
// Verify that the sensor get state method is called.
|
||||||
// _mockSensor.Verify(s => s.GetState(), Times.AtLeastOnce());
|
_mockSensor.Verify(s => s.Object.GetState(), Times.AtLeastOnce());
|
||||||
//
|
|
||||||
// _mockSensor.Setup(s => s.GetState()).Returns(SensorStateEnum.Initialized);
|
_mockSensor.Setup(s => s.Object.GetState()).Returns(SensorStateEnum.Initialized);
|
||||||
// result = service.GetSensorState(null, null).Result;
|
result = service.GetSensorState(null, null).Result;
|
||||||
// Assert.Equal(SensorStateEnum.Initialized, result.State);
|
Assert.Equal(SensorStateEnum.Initialized, result.State);
|
||||||
// }
|
}
|
||||||
//
|
|
||||||
// [Fact]
|
[Fact]
|
||||||
// public void Test_GetSensorMeasurement()
|
public void Test_GetSensorMeasurement()
|
||||||
// {
|
{
|
||||||
// var service = new Bme680GrpcService(_mockLogger.Object, _mockSensor.Object);
|
var service = new Bme680GrpcService(_mockLogger.Object, _mockSensor.Object);
|
||||||
// service.GetSensorMeasurement(null, null);
|
service.GetSensorMeasurement(null, null);
|
||||||
//
|
|
||||||
// // Verify that the sensor get measurement method is called.
|
// Verify that the sensor get measurement method is called.
|
||||||
// _mockSensor.Verify(s => s.GetMeasurement(), Times.AtLeastOnce());
|
_mockSensor.Verify(s => s.Object.GetMeasurement(), Times.AtLeastOnce());
|
||||||
//
|
|
||||||
// }
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
using NucuCar.Sensors.EnvironmentSensor;
|
||||||
|
using NucuCarSensorsProto;
|
||||||
|
|
||||||
|
namespace NucuCar.UnitTests.NucuCar.Sensors.Tests.EnvironmentSensor.Tests
|
||||||
|
{
|
||||||
|
public partial class Bme680GrpcServiceTest
|
||||||
|
{
|
||||||
|
public class TestBme680Sensor : Bme680Sensor
|
||||||
|
{
|
||||||
|
// TODO Make more generic
|
||||||
|
public override EnvironmentSensorMeasurement GetMeasurement()
|
||||||
|
{
|
||||||
|
return new EnvironmentSensorMeasurement();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override SensorStateEnum GetState()
|
||||||
|
{
|
||||||
|
return SensorStateEnum.Error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue