예제 #1
0
        public void ProcessAllRules_AnyDeadCellWithExactlyThreeLiveNeighbours_BecomesLiveCell()
        {
            var processRules = new ProcessRules(new Rule().Dead().CellWithExactly(3).Neighbours().Lives());
            var activate     = new[] { new Point(2, 2), new Point(3, 3), new Point(2, 4) };
            var gameMatrix   = new GameMatrix(6, 6).Activate(activate);

            var processAllRules = processRules.ProcessAllRules(gameMatrix);
            var shouldBeActive  = new[] { new Point(2, 2), new Point(2, 3), new Point(2, 4), new Point(3, 3) };

            Assert.That(processAllRules.Count, Is.EqualTo(1), "Changes");
            Assert.That(gameMatrix.GetCells(shouldBeActive).IsAllAlive(), "All Points are alive");
        }
예제 #2
0
        public void ProcessAllRules_AnyLiveCellWithTwoLiveNeighbours_ShouldLiveOn()
        {
            var processRules = new ProcessRules(
                new Rule().Live().CellWithTwoOrThree().Neighbours().Lives());
            var activate   = new[] { new Point(2, 2), new Point(2, 3), new Point(3, 2), new Point(3, 3) };
            var gameMatrix = new GameMatrix(6, 6).Activate(activate);

            var processAllRules = processRules.ProcessAllRules(gameMatrix);
            var shouldBeActive  = new[] { new Point(2, 2), new Point(2, 3), new Point(3, 2), new Point(3, 3) };

            Assert.That(processAllRules.Count, Is.EqualTo(4), "Changes");
            Assert.That(gameMatrix.GetCells(shouldBeActive).IsAllAlive(), "All Points are alive");
        }