141 lines
3.6 KiB
C#
141 lines
3.6 KiB
C#
using RobotNet10.GlobalPathPlanner.Model;
|
|
|
|
namespace RobotNet10.GlobalPathPlanner.UnitTest;
|
|
|
|
public class GlobalNodeTests
|
|
{
|
|
[Fact]
|
|
public void DistanceTo_WithSamePosition_ShouldReturnZero()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = 5.0, Y = 5.0 };
|
|
var node2 = new GlobalNode { X = 5.0, Y = 5.0 };
|
|
|
|
// Act
|
|
var distance = node1.DistanceTo(node2);
|
|
|
|
// Assert
|
|
Assert.Equal(0.0, distance, 5);
|
|
}
|
|
|
|
[Fact]
|
|
public void DistanceTo_WithHorizontalDistance_ShouldReturnCorrectValue()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = 0.0, Y = 0.0 };
|
|
var node2 = new GlobalNode { X = 10.0, Y = 0.0 };
|
|
|
|
// Act
|
|
var distance = node1.DistanceTo(node2);
|
|
|
|
// Assert
|
|
Assert.Equal(10.0, distance, 5);
|
|
}
|
|
|
|
[Fact]
|
|
public void DistanceTo_WithVerticalDistance_ShouldReturnCorrectValue()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = 0.0, Y = 0.0 };
|
|
var node2 = new GlobalNode { X = 0.0, Y = 10.0 };
|
|
|
|
// Act
|
|
var distance = node1.DistanceTo(node2);
|
|
|
|
// Assert
|
|
Assert.Equal(10.0, distance, 5);
|
|
}
|
|
|
|
[Fact]
|
|
public void DistanceTo_WithDiagonalDistance_ShouldReturnCorrectValue()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = 0.0, Y = 0.0 };
|
|
var node2 = new GlobalNode { X = 3.0, Y = 4.0 };
|
|
|
|
// Act
|
|
var distance = node1.DistanceTo(node2);
|
|
|
|
// Assert
|
|
Assert.Equal(5.0, distance, 5); // 3-4-5 triangle
|
|
}
|
|
|
|
[Fact]
|
|
public void DistanceTo_ShouldBeCommutative()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = 1.0, Y = 2.0 };
|
|
var node2 = new GlobalNode { X = 4.0, Y = 6.0 };
|
|
|
|
// Act
|
|
var distance1 = node1.DistanceTo(node2);
|
|
var distance2 = node2.DistanceTo(node1);
|
|
|
|
// Assert
|
|
Assert.Equal(distance1, distance2, 5);
|
|
}
|
|
|
|
[Fact]
|
|
public void DistanceTo_WithNegativeCoordinates_ShouldReturnCorrectValue()
|
|
{
|
|
// Arrange
|
|
var node1 = new GlobalNode { X = -5.0, Y = -5.0 };
|
|
var node2 = new GlobalNode { X = -2.0, Y = -1.0 };
|
|
|
|
// Act
|
|
var distance = node1.DistanceTo(node2);
|
|
|
|
// Assert
|
|
Assert.Equal(5.0, distance, 5); // sqrt(3^2 + 4^2) = 5
|
|
}
|
|
|
|
[Fact]
|
|
public void ToString_WithName_ShouldReturnName()
|
|
{
|
|
// Arrange
|
|
var node = new GlobalNode { Name = "TestNode" };
|
|
|
|
// Act
|
|
var result = node.ToString();
|
|
|
|
// Assert
|
|
Assert.Equal("TestNode", result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ToString_WithoutName_ShouldReturnTypeName()
|
|
{
|
|
// Arrange
|
|
var node = new GlobalNode { Name = null };
|
|
|
|
// Act
|
|
var result = node.ToString();
|
|
|
|
// Assert
|
|
Assert.Equal(typeof(GlobalNode).ToString(), result);
|
|
}
|
|
|
|
[Fact]
|
|
public void Properties_ShouldBeSettable()
|
|
{
|
|
// Arrange & Act
|
|
var node = new GlobalNode
|
|
{
|
|
Id = Guid.NewGuid(),
|
|
MapId = Guid.NewGuid(),
|
|
Name = "Test",
|
|
X = 1.5,
|
|
Y = 2.5,
|
|
Orientation = Orientation.FORWARD
|
|
};
|
|
|
|
// Assert
|
|
Assert.NotEqual(Guid.Empty, node.Id);
|
|
Assert.NotEqual(Guid.Empty, node.MapId);
|
|
Assert.Equal("Test", node.Name);
|
|
Assert.Equal(1.5, node.X);
|
|
Assert.Equal(2.5, node.Y);
|
|
Assert.Equal(Orientation.FORWARD, node.Orientation);
|
|
}
|
|
}
|