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)
def test_numbers_above_1000_are_ignored(self): calc = StringCalculator() result = calc.add("2,1001") self.assertEqual(2, result)
def test_empty_string_returns_zero(self): calc = StringCalculator() result = calc.add("") self.assertEqual(0, result)
def test_support_any_lenght_custom_delimiter(self): calc = StringCalculator() result = calc.add("//[***]\n1***2***3") self.assertEqual(6, result)
def test_support_multiple_custom_delimiter(self): calc = StringCalculator() result = calc.add("//[*][%]\n1*2%3") self.assertEqual(6, result)
def test_support_custom_delimiter(self): calc = StringCalculator() result = calc.add("//;\n1;2") self.assertEqual(3, result)
def test_support_newline_as_delimiter(self): calc = StringCalculator() result = calc.add("1\n2,3") self.assertEqual(6, result)
def test_string_supports_infite_number_of_numbers(self): calc = StringCalculator() result = calc.add("1,2,3") self.assertEqual(6, result)
def test_string_one_comma_two_returns_three(self): calc = StringCalculator() result = calc.add("1,2") self.assertEqual(3, result)
def test_string_one_returns_one(self): calc = StringCalculator() result = calc.add("1") self.assertEqual(1, result)