コード例 #1
0
    def test_get_new_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator._get_new_delimiter("//;\n1;2;17\n5")

        # Verify
        assert ';' == result
コード例 #2
0
    def test_call_add_with_new_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("//;\n1;2;17\n5")

        # Verify
        assert 25 == result
コード例 #3
0
    def test_add_with_new_line(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2\n17")

        # Verify
        assert 20 == result
コード例 #4
0
    def test_add_five_numbers(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2,17,4,1,1")

        # Verify
        assert 26 == result
コード例 #5
0
    def test_add_one_and_two(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2")

        # Verify
        assert 3 == result
コード例 #6
0
    def test_add_one(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1")

        # Verify
        assert 1 == result
コード例 #7
0
    def test_add_empty_string(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("")

        # Verify
        assert 0 == result
コード例 #8
0
    def test_get_new_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator._get_new_delimiter("//;\n1;2;17\n5")

        # Verify
        assert ';' == result
コード例 #9
0
    def test_add_with_new_line(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2\n17")

        # Verify
        assert 20 == result
コード例 #10
0
    def test_get_string_without_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator._get_string_without_delimiter("//;\n1,2")

        # Verify
        assert "1,2" == result
コード例 #11
0
    def test_add_one_and_two(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2")

        # Verify
        assert 3 == result
コード例 #12
0
    def test_add_five_numbers(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1,2,17,4,1,1")

        # Verify
        assert 26 == result
コード例 #13
0
    def test_get_string_without_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator._get_string_without_delimiter("//;\n1,2")

        # Verify
        assert "1,2" == result
コード例 #14
0
    def test_add_one(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("1")

        # Verify
        assert 1 == result
コード例 #15
0
    def test_call_add_with_new_delimiter(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("//;\n1;2;17\n5")

        # Verify
        assert 25 == result
コード例 #16
0
    def test_add_empty_string(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result = string_calculator.add("")

        # Verify
        assert 0 == result
コード例 #17
0
    def test_create_error_message_for_negative_numbers(self):
        # Setup
        string_calculator = StringCalculator()
        negative_numbers = [-1, -2, -3]

        # Exercise
        result = string_calculator._create_error_message(negative_numbers)

        # Verify
        assert 'negatives not allowed: -1, -2, -3' == result
コード例 #18
0
    def test_create_error_message_for_negative_numbers(self):
        # Setup
        string_calculator = StringCalculator()
        negative_numbers = [-1, -2, -3]

        # Exercise
        result = string_calculator._create_error_message(negative_numbers)

        # Verify
        assert 'negatives not allowed: -1, -2, -3' == result
コード例 #19
0
    def test_is_new_delimiter_set(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result1 = string_calculator._is_new_delimiter_set("//;\n1;2;17\n5")
        result2 = string_calculator._is_new_delimiter_set("1;2;17\n5")

        # Verify
        assert True == result1
        assert False == result2
コード例 #20
0
    def test_is_new_delimiter_set(self):
        # Setup
        string_calculator = StringCalculator()

        # Exercise
        result1 = string_calculator._is_new_delimiter_set("//;\n1;2;17\n5")
        result2 = string_calculator._is_new_delimiter_set("1;2;17\n5")

        # Verify
        assert True == result1
        assert False == result2
コード例 #21
0
    def test_negative_numbers_raises_exception(self):
        # Setup
        string_calculator = StringCalculator()
        exception_raised = False

        # Exercise
        try:
            result = string_calculator.add("-1")
        except Exception:
            exception_raised = True

        # Verify
        assert True == exception_raised
コード例 #22
0
    def test_negative_numbers_raises_exception(self):
        # Setup
        string_calculator = StringCalculator()
        exception_raised = False

        # Exercise
        try:
            result = string_calculator.add("-1")
        except Exception:
            exception_raised = True

        # Verify
        assert True == exception_raised
コード例 #23
0
    def test_multiple_negative_numbers(self):
        # Setup
        string_calculator = StringCalculator()
        exception_raised = False
        exception_message = ""

        # Exercise
        try:
            result = string_calculator.add("2,-1,4,-2")
        except Exception as err:
            exception_message = err
            exception_raised = True

        # Verify
        assert True == exception_raised
        assert 'negatives not allowed: -1, -2' == exception_message.args[0]
コード例 #24
0
    def test_multiple_negative_numbers(self):
        # Setup
        string_calculator = StringCalculator()
        exception_raised = False
        exception_message = ""

        # Exercise
        try:
            result = string_calculator.add("2,-1,4,-2")
        except Exception as err:
            exception_message = err
            exception_raised = True

        # Verify
        assert True == exception_raised
        assert 'negatives not allowed: -1, -2' == exception_message.args[0]
コード例 #25
0
 def setUp(self):
     self.stringCalculator = StringCalculator()
コード例 #26
0
class TestStringCalculator(unittest.TestCase):

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

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

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

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

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

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

    def test_for_string_input_with_a_negative_number(self):
        try:
            self.stringCalculator.add("-1,2")
        except ValueError as ve:
            self.assertEqual("negatives not allowed -1", ve.args[0])
        
    def test_for_string_input_with_multiple_negatives(self):
        try:
            self.stringCalculator.add("-1,2,-3")
        except ValueError as ve:
            self.assertEqual("negatives not allowed -1 -3", ve.args[0])

    def test_for_how_many_times_add_was_invoked(self):
        tmp = StringCalculator()
        for _ in range(10):
            _ = tmp.add("")
        
        self.assertEqual(10,tmp.get_called_count())

    def test_whether_numbers_greater_than_1000_are_ignored(self):
        self.assertEqual(2,self.stringCalculator.add("2,1001"))

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

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

    def test_for_multiple_multilength_delimeters(self):
        self.assertEqual(6,self.stringCalculator.add("//[***][\\%\\%\\%]\n1***2\\%\\%\\%3"))
コード例 #27
0
 def test_for_how_many_times_add_was_invoked(self):
     tmp = StringCalculator()
     for _ in range(10):
         _ = tmp.add("")
     
     self.assertEqual(10,tmp.get_called_count())