238 lines
7.2 KiB
C#
238 lines
7.2 KiB
C#
using RobotNet10.GlobalPathPlanner.Model;
|
|
|
|
namespace RobotNet10.GlobalPathPlanner.UnitTest;
|
|
|
|
/// <summary>
|
|
/// Helper class for creating test data
|
|
/// </summary>
|
|
public static class TestHelpers
|
|
{
|
|
/// <summary>
|
|
/// Creates a simple linear graph with 3 nodes connected in a line
|
|
/// </summary>
|
|
public static (GlobalNode[] Nodes, GlobalEdge[] Edges) CreateSimpleLinearGraph()
|
|
{
|
|
var node1 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node1",
|
|
X = 0.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node2 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("22222222-2222-2222-2222-222222222222"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node2",
|
|
X = 10.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node3 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("33333333-3333-3333-3333-333333333333"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node3",
|
|
X = 20.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var edge1 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node1.Id,
|
|
EndNodeId = node2.Id,
|
|
Degree = 1 // Linear
|
|
};
|
|
|
|
var edge2 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node2.Id,
|
|
EndNodeId = node3.Id,
|
|
Degree = 1 // Linear
|
|
};
|
|
|
|
return (
|
|
new[] { node1, node2, node3 },
|
|
new[] { edge1, edge2 }
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a square graph with 4 nodes forming a square
|
|
/// </summary>
|
|
public static (GlobalNode[] Nodes, GlobalEdge[] Edges) CreateSquareGraph()
|
|
{
|
|
var node1 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node1",
|
|
X = 0.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node2 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("22222222-2222-2222-2222-222222222222"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node2",
|
|
X = 10.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node3 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("33333333-3333-3333-3333-333333333333"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node3",
|
|
X = 10.0,
|
|
Y = 10.0
|
|
};
|
|
|
|
var node4 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("44444444-4444-4444-4444-444444444444"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node4",
|
|
X = 0.0,
|
|
Y = 10.0
|
|
};
|
|
|
|
var edge1 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node1.Id,
|
|
EndNodeId = node2.Id,
|
|
Degree = 1
|
|
};
|
|
|
|
var edge2 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node2.Id,
|
|
EndNodeId = node3.Id,
|
|
Degree = 1
|
|
};
|
|
|
|
var edge3 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("cccccccc-cccc-cccc-cccc-cccccccccccc"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node3.Id,
|
|
EndNodeId = node4.Id,
|
|
Degree = 1
|
|
};
|
|
|
|
var edge4 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("dddddddd-dddd-dddd-dddd-dddddddddddd"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node4.Id,
|
|
EndNodeId = node1.Id,
|
|
Degree = 1
|
|
};
|
|
|
|
return (
|
|
new[] { node1, node2, node3, node4 },
|
|
new[] { edge1, edge2, edge3, edge4 }
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a disconnected graph (two separate components)
|
|
/// </summary>
|
|
public static (GlobalNode[] Nodes, GlobalEdge[] Edges) CreateDisconnectedGraph()
|
|
{
|
|
var node1 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node1",
|
|
X = 0.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node2 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("22222222-2222-2222-2222-222222222222"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node2",
|
|
X = 10.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node3 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("33333333-3333-3333-3333-333333333333"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node3",
|
|
X = 100.0,
|
|
Y = 100.0
|
|
};
|
|
|
|
var edge1 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node1.Id,
|
|
EndNodeId = node2.Id,
|
|
Degree = 1
|
|
};
|
|
|
|
// Node3 is disconnected (no edges)
|
|
|
|
return (
|
|
new[] { node1, node2, node3 },
|
|
new[] { edge1 }
|
|
);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Creates a graph with Bezier curve edges
|
|
/// </summary>
|
|
public static (GlobalNode[] Nodes, GlobalEdge[] Edges) CreateBezierCurveGraph()
|
|
{
|
|
var node1 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("11111111-1111-1111-1111-111111111111"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node1",
|
|
X = 0.0,
|
|
Y = 0.0
|
|
};
|
|
|
|
var node2 = new GlobalNode
|
|
{
|
|
Id = Guid.Parse("22222222-2222-2222-2222-222222222222"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
Name = "Node2",
|
|
X = 10.0,
|
|
Y = 10.0
|
|
};
|
|
|
|
var edge1 = new GlobalEdge
|
|
{
|
|
Id = Guid.Parse("aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"),
|
|
MapId = Guid.Parse("00000000-0000-0000-0000-000000000001"),
|
|
StartNodeId = node1.Id,
|
|
EndNodeId = node2.Id,
|
|
Degree = 2, // Quadratic Bezier
|
|
ControlPoint1X = 5.0,
|
|
ControlPoint1Y = 5.0
|
|
};
|
|
|
|
return (
|
|
new[] { node1, node2 },
|
|
new[] { edge1 }
|
|
);
|
|
}
|
|
}
|