89 lines
2.4 KiB
C#
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));
|
|
}
|
|
} |