示例#1
0
        public void ReturnsFalseForInvalidCheckDigitThirteen()
        {
            var isbn     = "9780262134723";
            var expected = false;
            var actual   = DigitChecker.HasValidCheckDigit(isbn);

            actual.Should().Be(expected);
        }
示例#2
0
        public void ReturnsSumOfIsbnDigitsAlternatelyMulitipliedByOneOrThree()
        {
            var isbn     = "9780262134729";
            var expected = 9 + (7 * 3) + 8 + (0 * 3) + 2 + (6 * 3) + 2 + (1 * 3) + 3 + (4 * 3) + 7 + (2 * 3);
            var actual   = DigitChecker.GetSumOfMultipliedDigits(isbn);

            actual.Should().Be(expected);
        }
示例#3
0
        public void ReturnsFalseForInvalidCheckDigitIsbnTen()
        {
            var isbn     = "0471606951";
            var expected = false;
            var actual   = DigitChecker.HasValidCheckDigit(isbn);

            actual.Should().Be(expected);
        }
示例#4
0
        public void ReturnsSumOfDigitsMultipliedByItsIndex()
        {
            var isbn     = "0471606952";
            var expected = (0 * 1) + (4 * 2) + (7 * 3) + (1 * 4) + (6 * 5) + (0 * 6) + (6 * 7) + (9 * 8) + (5 * 9);
            var actual   = DigitChecker.GetSumOfMultipliedDigits(isbn);

            actual.Should().Be(expected);
        }
示例#5
0
        public void ReturnsCheckDigitXForIsbnTen()
        {
            var isbn     = "824013341X";
            var expected = "X";
            var actual   = DigitChecker.GetCheckDigitForIsbnTen(isbn);

            actual.Should().Be(expected);
        }
示例#6
0
        public void ReturnsTrueForValidCheckDigitTen()
        {
            var isbn     = "824013341X";
            var expected = true;
            var actual   = DigitChecker.HasValidCheckDigit(isbn);

            actual.Should().Be(expected);
        }
示例#7
0
        public void FilterDigits_EmptyArray_ReturnsEmptyArray()
        {
            var array = new int[0];
            int digit = 0;

            int[] result = DigitChecker.FilterDigits(array, digit);

            Assert.IsTrue(result.Length == 0);
        }
示例#8
0
        public void FilterDigits_DigitNotInArray_ReturnsEmptyArray()
        {
            var array = new[] { 7, 1, 2, 3, 4, 5, 6, 7, 68, 70, 15, 17 };
            int digit = 9;

            int[] result = DigitChecker.FilterDigits(array, digit);

            Assert.IsTrue(result.Length == 0);
        }
示例#9
0
        public void FilterDigits_DigitThatIsNotInArray_ReturnsEmptyArray()
        {
            var array          = new[] { 7, 1, 2, 3, 4, 5, 6, 7, 68, 70, 15, 17 };
            int digit          = 9;
            var expectedResult = new int[0];

            int[] actualResult = DigitChecker.FilterDigits(array, digit);

            Assert.IsTrue(actualResult.SequenceEqual(expectedResult));
        }
示例#10
0
        public void FilterDigits_DigitThatIsNotInTheArray_ReturnsEmptyArray()
        {
            int digit = 2;

            int[] array    = Enumerable.Range(-100, 100).Where(v => !v.ToString().Contains(digit.ToString())).ToArray();
            int[] expected = new int[0];

            int[] actual = DigitChecker.FilterDigits(array, digit);

            Assert.IsTrue(actual.SequenceEqual(expected));
        }
示例#11
0
        public void FilterDigits_OrderedArrayWithNegativeNumbers_ReturnsValidAnswer()
        {
            int digit = 2;

            int[] array    = Enumerable.Range(-100, 100).ToArray();
            int[] expected = array.Where(v => v.ToString().Contains(digit.ToString())).ToArray();

            int[] actual = DigitChecker.FilterDigits(array, digit);

            Assert.IsTrue(actual.SequenceEqual(expected));
        }
示例#12
0
        public static void BeginGuessing()
        {
            int  points        = 0;
            int  fails         = 0;
            bool floatingPoint = true;

            while (true)
            {
                char digit = Console.ReadKey().KeyChar;

                bool isCorrect = DigitChecker.CheckDigit(digit);

                if (isCorrect)
                {
                    points++;
                }
                else
                {
                    // Remove the digit and replace it with the correct one. Change its colour so that it's clear it was wrong.
                    char correctDigit = DigitChecker.GetCorrectDigit(points + fails);
                    Console.Write("\b");

                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.Write(correctDigit);
                    Console.ForegroundColor = ConsoleColor.Gray;

                    fails++;

                    if (fails == 3)
                    {
                        // End the game.
                        Console.WriteLine($"\nGame over. You scored {points} points!");
                        return;
                    }
                }

                if (floatingPoint)
                {
                    // Add a comma after the first digit entered.
                    Console.Write('.');
                    floatingPoint = false;
                }
            }
        }
        public void FilterDigits_AllElementsContainDigit_ReturnsEqualArray()
        {
            int    digit    = 9;
            int    bound    = 100000000;
            string strDigit = digit.ToString();
            var    array    = Enumerable.Range(-bound, 2 * bound)
                              .Where(v => v.ToString().Contains(strDigit))
                              .ToArray();

            var sw = new Stopwatch();

            sw.Start();
            int[] result = DigitChecker.FilterDigits(array, digit);
            sw.Stop();

            Console.WriteLine(sw.ElapsedMilliseconds);

            CollectionAssert.AreEqual(array, result);
        }
示例#14
0
        private void DigitButton_Click(object sender, RoutedEventArgs e)
        {
            string digitString = (sender as Button).Content.ToString();
            char   digit       = char.Parse(digitString);

            bool isCorrect = DigitChecker.CheckDigit(digit);

            if (isCorrect)
            {
                DigitsBlock.Text += digit;
                _scoreboard.Points++;
            }
            else
            {
                char correctDigit = DigitChecker.GetCorrectDigit(_scoreboard.Points + _scoreboard.Fails);

                DigitsBlock.Text += correctDigit;

                _scoreboard.Fails++;

                if (_scoreboard.Fails == 3)
                {
                    MessageBox.Show($"Game over! You scored {_scoreboard.Points} points.", "Game over!");

                    foreach (var elem in MainGrid.Children)
                    {
                        if (elem is Button b)
                        {
                            b.IsEnabled = false;
                        }
                    }
                }
            }

            if (_floatingPoint)
            {
                DigitsBlock.Text += '.';
                _floatingPoint    = false;
            }
        }
        public void FilterDigits_ReturnsEmptyArray(int[] array, int digit)
        {
            int[] result = DigitChecker.FilterDigits(array, digit);

            CollectionAssert.IsEmpty(result);
        }
 public int[] FilterDigits_DataFromSource_FilerDigits_ResultOnlyElementsWithPassedDigit(int[] array, int digit) =>
 DigitChecker.FilterDigits(array, digit);
 public void FilterDigits_ArrayIsNull_ThrowsArgumentNullException() =>
 Assert.Throws <ArgumentNullException>(() => DigitChecker.FilterDigits(null, 0));
 public void FilterDigits_DigitIsOutOfRange_ThrowsArgumentOutOfRangeException() =>
 Assert.Throws <ArgumentOutOfRangeException>(() => DigitChecker.FilterDigits(new int[1], 10));
示例#19
0
 public void FilterDigits_NullArray_ThrowsArgumentNullException() =>
 DigitChecker.FilterDigits(null, 0);
示例#20
0
 public void FilterDigits_DigitIs10_ThrowsArgumentOutOfRangeException() =>
 DigitChecker.FilterDigits(new int[0], 10);
示例#21
0
 public void FilterDigits_DigitIsMinusOne_ThrowsArgumentOutOfRangeException() =>
 DigitChecker.FilterDigits(new int[0], -1);