151 lines
3.7 KiB
C#
151 lines
3.7 KiB
C#
using RobotNet.VDA5050.Order;
|
|
using Xunit;
|
|
|
|
namespace RobotNet10.RobotApp.Tests.Example;
|
|
|
|
/// <summary>
|
|
/// Example test class showing how tests should be structured.
|
|
/// Actual tests require refactoring RobotOrderController dependencies first.
|
|
/// See README.md for details.
|
|
/// </summary>
|
|
public class OrderValidationTests_Example
|
|
{
|
|
[Fact]
|
|
public void OrderMsg_WithValidData_ShouldHaveCorrectProperties()
|
|
{
|
|
// Arrange
|
|
var order = new OrderMsg
|
|
{
|
|
OrderId = "TEST001",
|
|
OrderUpdateId = 0,
|
|
HeaderId = 1,
|
|
Timestamp = DateTime.UtcNow.ToString("o"),
|
|
Version = "2.0.0",
|
|
Manufacturer = "Test",
|
|
SerialNumber = "SN001",
|
|
Nodes = [],
|
|
Edges = []
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.Equal("TEST001", order.OrderId);
|
|
Assert.Equal(0, order.OrderUpdateId);
|
|
Assert.NotNull(order.Nodes);
|
|
Assert.NotNull(order.Edges);
|
|
}
|
|
|
|
[Fact]
|
|
public void Node_WithValidPosition_ShouldHaveCorrectCoordinates()
|
|
{
|
|
// Arrange
|
|
var node = new Node
|
|
{
|
|
NodeId = "NODE001",
|
|
SequenceId = 0,
|
|
Released = true,
|
|
NodePosition = new NodePosition
|
|
{
|
|
X = 10.5,
|
|
Y = 20.3,
|
|
Theta = 1.57,
|
|
MapId = "MAP001"
|
|
}
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.Equal("NODE001", node.NodeId);
|
|
Assert.Equal(0, node.SequenceId);
|
|
Assert.True(node.Released);
|
|
Assert.Equal(10.5, node.NodePosition.X);
|
|
Assert.Equal(20.3, node.NodePosition.Y);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(0, true)] // First node, sequence 0
|
|
[InlineData(2, true)] // Second node, sequence 2
|
|
[InlineData(4, true)] // Third node, sequence 4
|
|
[InlineData(1, false)] // Invalid odd sequence for node
|
|
[InlineData(3, false)] // Invalid odd sequence for node
|
|
public void Node_SequenceId_ShouldBeEven(int sequenceId, bool isValid)
|
|
{
|
|
// This demonstrates how validation logic should be tested
|
|
// Nodes should have even sequence IDs: 0, 2, 4, 6, ...
|
|
|
|
// Act
|
|
bool isEven = sequenceId % 2 == 0;
|
|
|
|
// Assert
|
|
Assert.Equal(isValid, isEven);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(1, true)] // First edge, sequence 1
|
|
[InlineData(3, true)] // Second edge, sequence 3
|
|
[InlineData(5, true)] // Third edge, sequence 5
|
|
[InlineData(0, false)] // Invalid even sequence for edge
|
|
[InlineData(2, false)] // Invalid even sequence for edge
|
|
public void Edge_SequenceId_ShouldBeOdd(int sequenceId, bool isValid)
|
|
{
|
|
// This demonstrates how validation logic should be tested
|
|
// Edges should have odd sequence IDs: 1, 3, 5, 7, ...
|
|
|
|
// Act
|
|
bool isOdd = sequenceId % 2 == 1;
|
|
|
|
// Assert
|
|
Assert.Equal(isValid, isOdd);
|
|
}
|
|
|
|
[Fact]
|
|
public void Edge_ShouldConnectTwoNodes()
|
|
{
|
|
// Arrange
|
|
var node1 = new Node { NodeId = "NODE001", SequenceId = 0 };
|
|
var node2 = new Node { NodeId = "NODE002", SequenceId = 2 };
|
|
|
|
var edge = new Edge
|
|
{
|
|
EdgeId = "EDGE001",
|
|
SequenceId = 1,
|
|
StartNodeId = node1.NodeId,
|
|
EndNodeId = node2.NodeId
|
|
};
|
|
|
|
// Act & Assert
|
|
Assert.Equal(node1.NodeId, edge.StartNodeId);
|
|
Assert.Equal(node2.NodeId, edge.EndNodeId);
|
|
Assert.Equal(1, edge.SequenceId); // Between node 0 and node 2
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|