public void Constructor_SetsMaxLoopCount_WhenCalled()
        {
            // Arrange
            CircleAsBitArray sut = CreateSut();

            // Act
            // Assert
            Assert.Equal(10000000,
                         sut.MaxLoopCount);
        }
        public void NextPersonId_Throws_ForToManyLoops()
        {
            // Arrange
            bool[] bitArray = Enumerable.Repeat(false,
                                                10).ToArray();
            CircleAsBitArray sut = CreateSut();

            sut.SetMaxLoopCount(2);

            // Act
            // Assert
            Assert.Throws <ArgumentException>(() => sut.NextPersonId(bitArray,
                                                                     1));
        }
        public void Run(int numberOfPeopleStandingInACircle,
                        int numberOfPeopleToCountOverEachTime)
        {
            var circle = new CircleAsBitArray();

            IEnumerable <int> result = circle.Run(numberOfPeopleStandingInACircle,
                                                  numberOfPeopleToCountOverEachTime).ToArray();

            int winner = result.Last();

            System.Console.WriteLine("The sequence of children as they are eliminated: {0}",
                                     m_Helper.ArrayToString(result));
            System.Console.WriteLine("The id of the winning child: {0}",
                                     winner);
        }
        public void NextPersonId_ReturnsNextPersonId_WhenCalled(
            int personId,
            int expected,
            bool[] array)
        {
            // Arrange
            CircleAsBitArray sut = CreateSut();

            // Act
            int actual = sut.NextPersonId(array,
                                          personId);

            // Assert
            Assert.Equal(expected,
                         actual);
        }
        public void Run_ReturnsPersonIds_WhenCalled(
            int numberOfPeople,
            int countTo,
            int[] expected)
        {
            // Arrange
            CircleAsBitArray sut = CreateSut();

            // Act
            IEnumerable <int> actual = sut.Run(numberOfPeople,
                                               countTo);

            // Assert
            TestHelper.AssertArray(expected,
                                   actual);
        }
        public void Run_ReturnsPersonIds_WhenCalled(
            int numberOfPeople,
            int countTo,
            int expectedWinner)
        {
            // Arrange
            CircleAsBitArray sut = CreateSut();

            // Act
            int actual = sut.Run(numberOfPeople,
                                 countTo).Last();

            // Assert
            Assert.Equal(expectedWinner,
                         actual);
        }