Initial commit
This commit is contained in:
@@ -0,0 +1,112 @@
|
||||
using FluentAssertions;
|
||||
using Xunit;
|
||||
using RobotNet10.NavigationTune.Shared.Models;
|
||||
using RobotNet10.NavigationTune.Services;
|
||||
using RobotNet10.NavigationTune.Test.Helpers;
|
||||
|
||||
namespace RobotNet10.NavigationTune.Test.Services;
|
||||
|
||||
public class SafetyMonitorTests
|
||||
{
|
||||
private readonly SafetyMonitor _safetyMonitor;
|
||||
private readonly SafetyConfig _safetyConfig;
|
||||
|
||||
public SafetyMonitorTests()
|
||||
{
|
||||
_safetyConfig = new SafetyConfig();
|
||||
_safetyMonitor = new SafetyMonitor(_safetyConfig);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CheckSafety_WithLowCTE_ShouldReturnTrue()
|
||||
{
|
||||
// Arrange
|
||||
var telemetry = TestHelpers.CreateTelemetryData(cte: 0.05f);
|
||||
var referencePath = new ReferencePath
|
||||
{
|
||||
Points = TestHelpers.CreateSimplePath(10, 10.0),
|
||||
TotalLength = 10.0
|
||||
};
|
||||
|
||||
// Act
|
||||
var result = _safetyMonitor.CheckSafety(telemetry, referencePath);
|
||||
|
||||
// Assert
|
||||
result.Should().BeTrue();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CheckSafety_WithHighCTE_ShouldReturnFalse()
|
||||
{
|
||||
// Arrange
|
||||
var telemetry = TestHelpers.CreateTelemetryData(cte: 2.0); // Very high CTE
|
||||
var referencePath = new ReferencePath
|
||||
{
|
||||
Points = TestHelpers.CreateSimplePath(10, 10.0),
|
||||
TotalLength = 10.0
|
||||
};
|
||||
|
||||
// Act
|
||||
var result = _safetyMonitor.CheckSafety(telemetry, referencePath);
|
||||
|
||||
// Assert
|
||||
result.Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CheckSafety_WithHighHeadingError_ShouldReturnFalse()
|
||||
{
|
||||
// Arrange
|
||||
var telemetry = TestHelpers.CreateTelemetryData(headingError: 1.5); // Very high heading error
|
||||
var referencePath = new ReferencePath
|
||||
{
|
||||
Points = TestHelpers.CreateSimplePath(10, 10.0),
|
||||
TotalLength = 10.0
|
||||
};
|
||||
|
||||
// Act
|
||||
var result = _safetyMonitor.CheckSafety(telemetry, referencePath);
|
||||
|
||||
// Assert
|
||||
result.Should().BeFalse();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Reset_ShouldClearViolations()
|
||||
{
|
||||
// Arrange
|
||||
var telemetry = TestHelpers.CreateTelemetryData(cte: 2.0);
|
||||
var referencePath = new ReferencePath
|
||||
{
|
||||
Points = TestHelpers.CreateSimplePath(10, 10.0),
|
||||
TotalLength = 10.0
|
||||
};
|
||||
_safetyMonitor.CheckSafety(telemetry, referencePath);
|
||||
|
||||
// Act
|
||||
_safetyMonitor.Reset();
|
||||
var violations = _safetyMonitor.GetViolations();
|
||||
|
||||
// Assert
|
||||
violations.Should().BeEmpty();
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetViolations_AfterSafetyCheck_ShouldReturnViolations()
|
||||
{
|
||||
// Arrange
|
||||
var telemetry = TestHelpers.CreateTelemetryData(cte: 2.0);
|
||||
var referencePath = new ReferencePath
|
||||
{
|
||||
Points = TestHelpers.CreateSimplePath(10, 10.0),
|
||||
TotalLength = 10.0
|
||||
};
|
||||
|
||||
// Act
|
||||
_safetyMonitor.CheckSafety(telemetry, referencePath);
|
||||
var violations = _safetyMonitor.GetViolations();
|
||||
|
||||
// Assert
|
||||
violations.Should().NotBeEmpty();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user