Files
InverseOfLife.Test/tests/BoardTests.cs
2025-01-18 08:30:10 +00:00

89 lines
2.4 KiB
C#

using NUnit.Framework;
namespace InverseOfLife.Test;
[TestFixture]
public class BoardTests
{
[Test]
public void BoardInitializationTest()
{
var board = new Board(5, 5);
Assert.That(board.Width, Is.EqualTo(5));
Assert.That(board.Height, Is.EqualTo(5));
Assert.IsNotNull(board.Lives);
Assert.That(board.Lives.Count, Is.EqualTo(0));
}
[Test]
public void ToggleTest_AddAndRemoveCells()
{
var board = new Board(5, 5);
board.Toggle(2, 2);
Assert.That(board.Lives, Contains.Item((2, 2)));
board.Toggle(2, 2);
Assert.IsFalse(board.Lives.Contains((2, 2)));
}
[Test]
public void EvaluateTest_WithSimpleRule()
{
var board = new Board(5, 5);
board.Toggle(2, 2);
board.Toggle(3, 2);
board.Toggle(4, 2);
Assert.IsTrue(board.Lives.Contains((2, 2)));
Assert.IsTrue(board.Lives.Contains((3, 2)));
Assert.IsTrue(board.Lives.Contains((4, 2)));
board.Evaluate();
Assert.IsFalse(board.Lives.Contains((2, 2)));
Assert.IsTrue(board.Lives.Contains((3, 2)));
Assert.IsFalse(board.Lives.Contains((4, 2)));
Assert.IsTrue(board.Lives.Contains((3, 1)));
Assert.IsTrue(board.Lives.Contains((3, 3)));
}
[Test]
public void ToStringTest_BasicGridRepresentation()
{
var board = new Board(5, 5);
board.Toggle(1, 1);
board.Toggle(3, 2);
board.Toggle(4, 4);
string expected =
" \n" +
" o \n" +
" o \n" +
" \n" +
" o\n";
Assert.That(board.ToString(), Is.EqualTo(expected));
Console.Write(board.ToString());
}
[Test]
public void ToStringTest_WithEmptyBoard()
{
var board = new Board(3, 3);
string expected =
" \n" +
" \n" +
" \n";
Assert.That(board.ToString(), Is.EqualTo(expected));
}
[Test]
public void PopulateTest_PeriodicBoundaryCondition()
{
var board = new Board(3, 3, true, true);
board.Toggle(0, 0);
var neighbourCount = new Dictionary<(int, int), int>();
board.Populate(0, 0, neighbourCount);
Assert.That(neighbourCount[(1, 0)], Is.EqualTo(1));
Assert.That(neighbourCount[(2, 2)], Is.EqualTo(1));
}
}