Exemple #1
0
 def test_negative_numbers_throw_exception(self):
     calc = StringCalculator()
     try:
         calc.add("-1,-2")
         self.fail()
     except NegativeException as ex:
         self.assertEqual(ex.args[0], "Negatives not allowed: -1,-2")
class StringCalculatorTest(unittest.TestCase):

    def setUp(self):
       self.stringCalculator = StringCalculator()

    def testSumEmptyString(self):
        self.assertEqual("0",self.stringCalculator.add(""))

    def testSumOneValue(self):
        self.assertEqual("1",self.stringCalculator.add("1"))

    def testSumTwoValues(self):
        self.assertEqual("3",self.stringCalculator.add("1,2"))

    def testSum15Values(self):
        self.assertEqual(str(16*7+8),self.stringCalculator.add(self.string15()))

    def testSumTwoNewLinedString(self):
        self.assertEqual("3",self.stringCalculator.add("1\n2"))

    def testDefaultDelimiterSemiColom(self):
        self.assertEqual("3",self.stringCalculator.add("//;\n1;2"))

    def testNegativeValue(self):
        self.assertRaises(self.stringCalculator.NegativeNumbers,self.stringCalculator.add,"-1,2")

    def testANegativeValueMessage(self):
        self.assertRaisesRegexp(self.stringCalculator.NegativeNumbers,"^-1$",self.stringCalculator.add,"-1,2")

    def testNegativeValuesMessage(self):
        self.assertRaisesRegexp(self.stringCalculator.NegativeNumbers,"^-1,-2$",self.stringCalculator.add,"-1,-2,3")

    def testValuesOver1000(self):
        self.assertEqual("1003",self.stringCalculator.add("1,2,1000,1001"))

    def testMultipleCharDelimiter(self):
        self.assertEqual("3",self.stringCalculator.add("//[**]\n1**2"))

    def testMultipleCharMultipleDelimiter(self):
        self.assertEqual("6",self.stringCalculator.add("//[**][perra]\n1**2perra3"))

    def tearDown(self):
        pass

    def string15(self):
        string15 = ""

        for number in range (0,16):
            string15 += str(number)
            string15 += ","

        string15 = string15.strip(",")

        return string15
    def test_add_with_empty(self):
        """should return 0 for empty string"""
        # Given
        input = ""
        stringcalculator = StringCalculator()

        # When
        result = stringcalculator.add(input)

        # Then
        self.assertEqual(result, 0)
    def test_add_with_space_as_separator(self):
        """should return_sum when space is separator("""
        # Given
        input = "3 4"
        stringcalculator = StringCalculator()

        # When
        result = stringcalculator.add(input)

        # Then
        self.assertEqual(result, 7)
    def test_add_with_two_number(self):
        """should return sum of numbers with two numbers"""
        # Given
        input = "3,4"
        stringcalculator = StringCalculator()

        # When
        result = stringcalculator.add(input)

        # Then
        self.assertEqual(result, 7)
    def test_add_with_one_number(self):
        """should return the number with only one number"""
        # Given
        input = "3"
        stringcalculator = StringCalculator()

        # When
        result = stringcalculator.add(input)

        # Then
        self.assertEqual(result, 3)
Exemple #7
0
 def test_numbers_above_1000_are_ignored(self):
     calc = StringCalculator()
     result = calc.add("2,1001")
     self.assertEqual(2, result)
Exemple #8
0
 def test_empty_string_returns_zero(self):
     calc = StringCalculator()
     result = calc.add("")
     self.assertEqual(0, result)
Exemple #9
0
 def test_support_any_lenght_custom_delimiter(self):
     calc = StringCalculator()
     result = calc.add("//[***]\n1***2***3")
     self.assertEqual(6, result)
Exemple #10
0
 def test_support_multiple_custom_delimiter(self):
     calc = StringCalculator()
     result = calc.add("//[*][%]\n1*2%3")
     self.assertEqual(6, result)
Exemple #11
0
 def test_support_custom_delimiter(self):
     calc = StringCalculator()
     result = calc.add("//;\n1;2")
     self.assertEqual(3, result)
Exemple #12
0
 def test_support_newline_as_delimiter(self):
     calc = StringCalculator()
     result = calc.add("1\n2,3")
     self.assertEqual(6, result)
Exemple #13
0
 def test_string_supports_infite_number_of_numbers(self):
     calc = StringCalculator()
     result = calc.add("1,2,3")
     self.assertEqual(6, result)
Exemple #14
0
 def test_string_one_comma_two_returns_three(self):
     calc = StringCalculator()
     result = calc.add("1,2")
     self.assertEqual(3, result)
Exemple #15
0
 def test_string_one_returns_one(self):
     calc = StringCalculator()
     result = calc.add("1")
     self.assertEqual(1, result)