Esempio n. 1
0
 static void Main(string[] args)
 {
     while (true)
     {
         var stringCalculator = new StringCalculator(Console.ReadLine());
         Console.WriteLine(stringCalculator.CalculateSum());
     }
 }
        public void TestTwoDelimiters()
        {
            // Arrange
            string input            = "1\n2,3";
            var    expected         = "1+2+3 = 6";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestOneInput()
        {
            // Arrange
            string input            = "5";
            var    expected         = "5 = 5";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestWhitespaces()
        {
            // Arrange
            string input            = "20     ,   40   ";
            var    expected         = "20+40 = 60";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestMultipleDelimitersWithCharacters()
        {
            // Arrange
            string input            = "//[*][!!][r9r]\n11r9r22*33!!44";
            var    expected         = "11+22+33+44 = 110";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestMultipleDelimitersWithLargeNumber()
        {
            // Arrange
            string input            = "//[**][((]\n11((22**33**500000**10";
            var    expected         = "11+22+33+0+10 = 76";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestMultipleDelimiters()
        {
            // Arrange
            string input            = "//[**][((]\n11((22**33";
            var    expected         = "11+22+33 = 66";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestParenthesisMultipleCharacterDelimiter()
        {
            // Arrange
            string input            = "//[((]\n11((22((33";
            var    expected         = "11+22+33 = 66";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestSingleCharacterDelimiter()
        {
            // Arrange
            string input            = "//;\n2;5";
            var    expected         = "0+2+5 = 7";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestLargeNumbers()
        {
            // Arrange
            string input            = "1\n2000, 123456789,80,";
            var    expected         = "1+0+0+80+0 = 81";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestSingleDelimiterWithEmptyEntry()
        {
            // Arrange
            string input            = "1\n2,";
            var    expected         = "1+2+0 = 3";
            var    stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestHappyPath()
        {
            // Arrange
            var input            = "1,2,3,4,5,6,7,8,9,10,11,12";
            var expected         = "1+2+3+4+5+6+7+8+9+10+11+12 = 78";
            var stringCalculator = new StringCalculator.StringCalculator(input);

            // Act
            var actual = stringCalculator.CalculateSum();

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void TestExceptionForNegativeNumbers()
        {
            // Arrange
            string input = "-50,100,-100,200";
            var    expectedExceptionMessage = "Unable to process negative numbers: -50, -100";
            var    stringCalculator         = new StringCalculator.StringCalculator(input);

            // Act
            try
            {
                var actual = stringCalculator.CalculateSum();
                // Fail if no exception thrown
                Assert.Fail();
            }
            // Assert
            catch (ArgumentOutOfRangeException ex)
            {
                Assert.IsTrue(ex.Message.Contains(expectedExceptionMessage));
            }
            catch (Exception)
            {
                Assert.Fail();
            }
        }