using RobotNet.VDA5050.Order; using Xunit; namespace RobotNet10.RobotApp.Tests.Example; /// /// Example test class showing how tests should be structured. /// Actual tests require refactoring RobotOrderController dependencies first. /// See README.md for details. /// 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 } }