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)); } }