Пример #1
0
        public void Add_method_accepts_unknown_number_of_numbers()
        {
            // Allow the Add method to handle an unknown amount of numbers

            // Arrange
            var randomNumber = new Random().Next(1, 100);
            var numbersList = new List<int>(randomNumber);
            var builder = new StringBuilder();
            for (var index = 0; index < randomNumber; index++)
            {
                var thisNumber = new Random().Next(0, 100);
                numbersList.Add(thisNumber);
                if (builder.Length > 0)
                    builder.Append(",");
                builder.Append(thisNumber);
            }
            var numbers = builder.ToString();
            var expected = numbersList.Sum();

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #2
0
        public void Add_method_accepts_newline_delimiters()
        {
            // Arrange
            var numbers = "1\n2";
            var expected = 3;

            // Act
            var actual = new Calculator(new string[] { ",", "\n" }).Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #3
0
        public void Add_method_accepts_optional_delimiter_line()
        {
            // Support different delimiters to change a delimiter,
            // the beginning of the string will contain a separate line that looks like this:
            // “//[delimiter]\n[numbers…]” for example “//;\n1;2” should return three where the default delimiter is ‘;’ .
            // the first line is optional. all existing scenarios should still be supported

            // Arrange
            var numbers = "//;\n1;2";
            var expected = 3;

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #4
0
        public void Add_method_ignores_numbers_higher_that_1000()
        {
            // Numbers bigger than 1000 should be ignored, so adding 2 + 1001  = 2

            // Arrange
            var numbers = "2,1001";
            var expected = 2;

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #5
0
        public void Multiple_delimiters_may_be_any_length()
        {
            // Allow multiple delimiters like this:
            // “//[delim1][delim2]\n” for example “//[*][%]\n1*2%3” should return 6.

            // Arrange
            var numbers = "//[*][%]\n1*2%3";
            var expected = 6;

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #6
0
        public void Delimiters_may_be_any_length()
        {
            // Delimiters can be of any length with the following format:
            // “//[delimiter]\n” for example: “//[***]\n1***2***3” should return 6

            // Arrange
            var numbers = "//[***]\n1***2***3";
            var expected = 6;

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #7
0
        public void Add_method_returns_zero_for_empty_string()
        {
            // Arrange
            var expected = 0;

            // Act
            var actual = new Calculator().Add(String.Empty);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #8
0
        public void Add_method_returns_two_for_the_number_two()
        {
            // Arrange
            var expected = 2;

            // Act
            var actual = new Calculator().Add("2");

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }
Пример #9
0
        public void Add_method_returns_sum_of_specified_numbers(string numbers, int answer)
        {
            // Arrange
            var values = (string.IsNullOrEmpty(numbers)) ? new int[] { 0,0} : numbers.Split(new char[] { ',' }).Select<string, int>(number => int.Parse(number));
            var expected = values.Sum();

            // Act
            var actual = new Calculator().Add(numbers);

            // Assert
            Assert.That(actual, Is.EqualTo(expected));
        }