Initial commit

This commit is contained in:
2026-07-13 09:25:40 +07:00
parent c08ff54676
commit bccfb156d7
1938 changed files with 641646 additions and 0 deletions

View File

@@ -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();
}
}