Files
GridCasting/GridCastingTests/ExecutorTests.cs
2026-04-17 16:38:06 +03:00

72 lines
2.0 KiB
C#

using GridCasting.Executor;
using GridCasting.Models.GridGraph;
using Path = GridCasting.Models.Path;
namespace GridCastingTests;
public class ExecutorTests
{
private GridGraph _graph;
private static readonly Path _path = new(0, 1, 1, 2, 3);
[SetUp]
public void Setup()
{
// Create a simple hex grid
_graph = new GridGraph();
var node = new GridGraphNode();
for (var i = 0; i < 6; i++)
node.Edges.Add(new GridGraphEdge(node, node, MathF.PI * i / 3, 1));
_graph.Nodes.Add(node);
}
[Test]
public void TestNoCommands()
{
var executor = new PathExecutor(_graph, []);
Assert.That(executor.Execute(_path), Is.False, "Executor should not execute without commands");
}
[Test]
public void TestWrongCommand()
{
var executor = new PathExecutor(_graph, []);
executor.AddCommand(new TestPassedCommand(), _path);
Assert.Multiple(() =>
{
Assert.That(executor.Execute(new Path(0, 1, 2, 1)), Is.False, "Executor should not execute with wrong command");
});
}
[Test]
public void TestCommandExecution()
{
var executor = new PathExecutor(_graph, []);
executor.AddCommand(new TestPassedCommand(), _path);
Assert.Multiple(() =>
{
Assert.That(executor.Execute(_path), Is.True, "Executor should execute with commands");
});
}
[Test]
public void TestCommandFamily()
{
var executor = new PathExecutor(_graph, []);
executor.AddCommand(new TestPassedCommand(), new Path(0, 1, 1, 2), true);
Assert.Multiple(() =>
{
Assert.That(executor.Execute(_path), Is.True, "Executor should execute with commands");
});
}
public class TestPassedCommand : ICommand
{
public void Execute(CommandContext context)
{
Assert.That(context.Command, Is.EqualTo(_path), "Command executed successfully");
}
}
}