public void Update_UpdatesStatus_WhenCalled()
        {
            // Arrange
            ICellInformation[] expected = CreateCellsInformation().ToArray();
            UnlimitedBoard     sut      = CreateSut();

            // Act
            sut.Update(expected);

            // Assert
            expected.ShouldEqual(sut.LivingCells());
        }
        public void GetStatus_ReturnsStatusDeadAsDefault_ForRowAndColumn(int row,
                                                                         int coloumn)
        {
            // Arrange
            UnlimitedBoard sut = CreateSut();

            // Act
            Cell.Status actual = sut.GetStatus(row,
                                               coloumn);

            // Assert
            actual.ShouldEqual(Cell.Status.Dead);
        }
        public void SetStatus_SetsStatusToDead_ForAlreadyDead()
        {
            // Arrange
            UnlimitedBoard sut = CreateSut();

            // Act
            sut.SetStatus(1,
                          1,
                          Cell.Status.Dead);

            // Assert
            sut.GetStatus(1,
                          1).ShouldEqual(Cell.Status.Dead);
        }
        public void SetStatus_SetsStatusToAlive_ForRowAndColumn(int row,
                                                                int coloumn)
        {
            // Arrange
            UnlimitedBoard sut = CreateSut();

            // Act
            sut.SetStatus(row,
                          coloumn,
                          Cell.Status.Alive);

            // Assert
            sut.GetStatus(row,
                          coloumn).ShouldEqual(Cell.Status.Alive);
        }
        public void LivingCells_ReturnsAllAlive_WhenCalled()
        {
            // Arrange
            var expected = new CellInformation[0];
            var finder   = Substitute.For <ILivingCellFinder>();

            finder.Find(Arg.Any <Dictionary <int, ICells> >()).Returns(expected);

            UnlimitedBoard sut = CreateSut();

            // Act
            IEnumerable <ICellInformation> actual = sut.LivingCells();

            // Assert
            expected.ShouldEqual(actual);
        }
        public void SetStatus_SetsStatusToDead_ForRowWithOtherAlive()
        {
            // Arrange
            UnlimitedBoard sut = CreateSut();

            sut.SetStatus(0,
                          0,
                          Cell.Status.Alive);
            sut.SetStatus(0,
                          1,
                          Cell.Status.Alive);

            // Act
            sut.SetStatus(0,
                          1,
                          Cell.Status.Dead);

            // Assert
            sut.GetStatus(0,
                          0).ShouldEqual(Cell.Status.Alive);
            sut.GetStatus(0,
                          1).ShouldEqual(Cell.Status.Dead);
        }