class StringCalculatorTestCase(unittest.TestCase):

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

    def testReturnZeroWhenNoParametersArePassed(self):
        self.assertEqual(self.sc.add(), 0)

    def testReturnSameValueIfOnlyOneParameterIsPassed(self):
        value = '1'
        self.assertEqual(self.sc.add(value), int(value))

    def testAddOperationIsOK(self):
        self.assertEquals(self.sc.add("1,2"), 3)

    def testAddOperationFails(self):
        self.assertNotEqual(self.sc.add("1,2"), 4)

    def testAddOperationWithNewLineSeparator(self):
        self.assertEquals(self.sc.add("1\n2"), 3)

    def testAddOperationIsOKWithBothTwoSeparators(self):
        self.assertEquals(self.sc.add("1,2\n3"), 6)

    def testAddOperationIsOKWithCustomSeparator(self):
        self.assertEquals(self.sc.add("//;\n4,5\n6;4"), 19)

    def testAddOperationLaunchExceptionWithNegatives(self):
        self.assertRaises(NegativesNotAllowed, self.sc.add, ("-1,2"))

    def testAddOperationLaunchExceptionWithOneNegative(self):
        self.assertRaises(NegativesNotAllowed, self.sc.add, ("-1"))
Example #2
0
class StringCalculatorTestCase(unittest.TestCase):
    def setUp(self):
        self.sc = StringCalculator()

    def testReturnZeroWhenNoParametersArePassed(self):
        self.assertEqual(self.sc.add(), 0)

    def testReturnSameValueIfOnlyOneParameterIsPassed(self):
        value = '1'
        self.assertEqual(self.sc.add(value), int(value))

    def testAddOperationIsOK(self):
        self.assertEquals(self.sc.add("1,2"), 3)

    def testAddOperationFails(self):
        self.assertNotEqual(self.sc.add("1,2"), 4)

    def testAddOperationWithNewLineSeparator(self):
        self.assertEquals(self.sc.add("1\n2"), 3)

    def testAddOperationIsOKWithBothTwoSeparators(self):
        self.assertEquals(self.sc.add("1,2\n3"), 6)

    def testAddOperationIsOKWithCustomSeparator(self):
        self.assertEquals(self.sc.add("//;\n4,5\n6;4"), 19)

    def testAddOperationLaunchExceptionWithNegatives(self):
        self.assertRaises(NegativesNotAllowed, self.sc.add, ("-1,2"))

    def testAddOperationLaunchExceptionWithOneNegative(self):
        self.assertRaises(NegativesNotAllowed, self.sc.add, ("-1"))
class StringCalculatorTest (unittest.TestCase):
    def setUp(self):
        self.sut = StringCalculator()

    def test_empty_string(self):
        self.assertEqual(0, self.sut.add(""))

    def test_string_with_a_number(self):
        self.assertEqual(1, self.sut.add("1"))

    def test_string_with_a_long_number(self):
        self.assertEqual(123, self.sut.add("123"))

    def test_two_numbers(self):
        self.assertEqual(2, self.sut.add("1,1"))

    def test_two_large_numbers(self):
        self.assertEqual(999, self.sut.add("123,876"))

    def test_more_numbers(self):
        self.assertEqual(25, self.sut.add("1,10,4,5,3,2"))
    
    def test_return_is_a_separator(self):
        self.assertEqual(9, self.sut.add("1,2\n6"))

    def test_invalid_input_ends_with_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "1,2,")

    def test_invalid_input_without_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "//\n1")
    
    def test_invalid_input_erroneous_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "//;\n1,2\n3")

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

    def test_numbers_bigger_than_1000_must_be_ignored(self):
        self.assertEqual(2, self.sut.add("1001,2"))

    def test_delimiters_with_any_length(self):
        self.assertEqual(6, self.sut.add("//[***]\n1***2***3"))
Example #4
0
class StringCalculatorTest(unittest.TestCase):
    def setUp(self):
        self.sut = StringCalculator()

    def test_empty_string(self):
        self.assertEqual(0, self.sut.add(""))

    def test_string_with_a_number(self):
        self.assertEqual(1, self.sut.add("1"))

    def test_string_with_a_long_number(self):
        self.assertEqual(123, self.sut.add("123"))

    def test_two_numbers(self):
        self.assertEqual(2, self.sut.add("1,1"))

    def test_two_large_numbers(self):
        self.assertEqual(999, self.sut.add("123,876"))

    def test_more_numbers(self):
        self.assertEqual(25, self.sut.add("1,10,4,5,3,2"))

    def test_return_is_a_separator(self):
        self.assertEqual(9, self.sut.add("1,2\n6"))

    def test_invalid_input_ends_with_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "1,2,")

    def test_invalid_input_without_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "//\n1")

    def test_invalid_input_erroneous_separator(self):
        self.assertRaises(SyntaxError, self.sut.add, "//;\n1,2\n3")

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

    def test_numbers_bigger_than_1000_must_be_ignored(self):
        self.assertEqual(2, self.sut.add("1001,2"))

    def test_delimiters_with_any_length(self):
        self.assertEqual(6, self.sut.add("//[***]\n1***2***3"))
 def setUp(self):
     self.sut = StringCalculator()
class StringCalculatorTest (unittest.TestCase):
    def setUp(self):
        self.sut = StringCalculator()

    def assertRaisesRegExp (self, excClass, regexp, callableObj, *args, **kargs):
        try:
            callableObj(*args, **kargs)
        except excClass as e:
            if not re.match(regexp, str(e)):
                self.fail("Invalid message: \n\t" + str(e) + '\nExpected:\n\t' + regexp)
            
        else:
            if hasattr(excClass,'__name__'): excName = excClass.__name__
            else: excName = str(excClass)
            raise self.failureException, "%s not raised" % excName


    def test_empty_string(self):
        self.assertEqual(0, self.sut.add(""))

    def test_only_one_number(self):
        self.assertEqual(1, self.sut.add("1"))

    def test_only_one_number_bigger (self):
        self.assertEqual(123, self.sut.add("123"))

    def test_two_numbers(self):
        self.assertEqual(4, self.sut.add("1,3"))

    def test_two_numbers_bigger(self):
        self.assertEqual(200, self.sut.add("150,50"))

    def test_tree_numbers (self):
        self.assertEqual(300, self.sut.add("75,75,150"))

    def test_enter_is_separator(self):
        self.assertEqual(6, self.sut.add("3,2\n1"))

    def test_enter_is_separator_bigger_numbers(self):
        self.assertEqual(600, self.sut.add("300,200\n100"))

    def test_change_separator(self):
        self.assertEqual(6, self.sut.add("//;\n4;2"))

    def test_change_separator_with_enter(self):
        self.assertEqual(10, self.sut.add("//;\n5;3\n2"))

    def test_invalid_separator(self):
        self.assertRaises(ValueError, self.sut.add, "//;\n5,4")

    def test_ignore_big_values(self):
        self.assertEqual(2, self.sut.add("2,1002"))

    def test_multicharacter_delimiter (self):
        self.assertEqual(6, self.sut.add("//[***]\n3***2***1"))

    def test_invalid_negatives(self):
        self.assertRaisesRegExp(ValueError, "negatives not allowed:\[-2]", self.sut.add, "-2")
        
    def test_invalid_negatives_plural(self):
        self.assertRaisesRegExp(ValueError, "negatives not allowed:\[-2, -3]", self.sut.add, "-2,-3")
class StringCalculatorTest(unittest.TestCase):
    def setUp(self):
        self.sut = StringCalculator()

    def test_empty_string(self):
        self.assertEqual(0, self.sut.add(""))

    def test_only_one_number(self):
        self.assertEqual(1, self.sut.add("1"))

    def test_only_one_number_bigger(self):
        self.assertEqual(123, self.sut.add("123"))

    def test_two_numbers(self):
        self.assertEqual(4, self.sut.add("1,3"))

    def test_two_numbers_bigger(self):
        self.assertEqual(200, self.sut.add("150,50"))

    def test_tree_numbers(self):
        self.assertEqual(300, self.sut.add("75,75,150"))

    def test_enter_is_separator(self):
        self.assertEqual(6, self.sut.add("3,2\n1"))

    def test_enter_is_separator_bigger_numbers(self):
        self.assertEqual(600, self.sut.add("300,200\n100"))

    def test_change_separator(self):
        self.assertEqual(6, self.sut.add("//;\n4;2"))

    def test_change_separator_with_enter(self):
        self.assertEqual(10, self.sut.add("//;\n5;3\n2"))

    def test_invalid_separator(self):
        self.assertRaises(ValueError, self.sut.add, "//;\n5,4")

    def test_ignore_big_values(self):
        self.assertEqual(2, self.sut.add("2,1002"))
Example #8
0
import sys

from stringcalculator import StringCalculator

if __name__ == "__main__":
    if len(sys.argv) > 1:
        calc = StringCalculator()
        sum = calc.add(sys.argv[1])
        print(sum)
Example #9
0
 def setUp(self):
     self.sut = StringCalculator()
Example #10
0
class StringCalculatorTest(unittest.TestCase):
    def setUp(self):
        self.sut = StringCalculator()

    def assertRaisesRegExp(self, excClass, regexp, callableObj, *args,
                           **kargs):
        try:
            callableObj(*args, **kargs)
        except excClass as e:
            if not re.match(regexp, str(e)):
                self.fail("Invalid message: \n\t" + str(e) +
                          '\nExpected:\n\t' + regexp)

        else:
            if hasattr(excClass, '__name__'): excName = excClass.__name__
            else: excName = str(excClass)
            raise self.failureException, "%s not raised" % excName

    def test_empty_string(self):
        self.assertEqual(0, self.sut.add(""))

    def test_only_one_number(self):
        self.assertEqual(1, self.sut.add("1"))

    def test_only_one_number_bigger(self):
        self.assertEqual(123, self.sut.add("123"))

    def test_two_numbers(self):
        self.assertEqual(4, self.sut.add("1,3"))

    def test_two_numbers_bigger(self):
        self.assertEqual(200, self.sut.add("150,50"))

    def test_tree_numbers(self):
        self.assertEqual(300, self.sut.add("75,75,150"))

    def test_enter_is_separator(self):
        self.assertEqual(6, self.sut.add("3,2\n1"))

    def test_enter_is_separator_bigger_numbers(self):
        self.assertEqual(600, self.sut.add("300,200\n100"))

    def test_change_separator(self):
        self.assertEqual(6, self.sut.add("//;\n4;2"))

    def test_change_separator_with_enter(self):
        self.assertEqual(10, self.sut.add("//;\n5;3\n2"))

    def test_invalid_separator(self):
        self.assertRaises(ValueError, self.sut.add, "//;\n5,4")

    def test_ignore_big_values(self):
        self.assertEqual(2, self.sut.add("2,1002"))

    def test_multicharacter_delimiter(self):
        self.assertEqual(6, self.sut.add("//[***]\n3***2***1"))

    def test_invalid_negatives(self):
        self.assertRaisesRegExp(ValueError, "negatives not allowed:\[-2]",
                                self.sut.add, "-2")

    def test_invalid_negatives_plural(self):
        self.assertRaisesRegExp(ValueError, "negatives not allowed:\[-2, -3]",
                                self.sut.add, "-2,-3")