def test_add_unknown_amount_of_numbers(self):
     calc = StringCalculator()
     theList = range(1, randint(10, 1000), 1)
     shuffle(theList)
     theStrLst = ",".join(map(lambda x: "%s" % x, theList))
     self.assertEqual(reduce(lambda x, y: x + y, theList),
                      calc.add(theStrLst))
    def setUp(self):
        self.logger = Mock(spec_set=['write'])
        self.webservice = Mock(spec_set=['logging_failed'])
        self.calc = StringCalculator(self.logger, self.webservice)

        self.valid_input = '1,2'
        self.sum_of_valid_input = 3
Example #3
0
def main():
    if len(sys.argv) == 2:

        calculator = StringCalculator()

        decoded_input = decode(sys.argv[1], 'unicode_escape')
        result = calculator.add(decoded_input)

        print(result)
    else:
        print(
            "Usage: python main.py //[delimiter]\\n[delimiter separated numbers]"
        )
        sys.exit(1)
 def test_extract_delimiter_with_multiple_delimiter(self):
     self.assertEqual(StringCalculator().extract_delimiter("//$,@\n1$2@3"),
                      ("1$2@3", "$,@"))
 def test_extract_delimiter_multiple_delimiters_arbitrary_length(self):
     self.assertEqual(
         StringCalculator().extract_delimiter("//$$$,@@\n1$$$2@@3"),
         ("1$$$2@@3", "$$$,@@"))
def test_when_one_numbers_then_return_same_number():
    assert StringCalculator().add("1") == 1
 def test_add_empty_list(self):
     self.assertEqual(StringCalculator().add_list([]), 0)
 def test_parse_input_with_comma(self):
     self.assertEqual(StringCalculator().parse_input("1,56,78"),
                      [1, 56, 78])
def test_when_big_number_then_ignore_it():
    assert StringCalculator().add("1001,2") == 2
 def test_parse_input_with_multiple_delimiters(self):
     self.assertEqual(StringCalculator().parse_input("1$2@3", "$,@"),
                      [1, 2, 3])
def calculator():
    return StringCalculator()
 def test_parse_input_single_input_with_newline_suffix(self):
     self.assertEqual(StringCalculator().parse_input("1\n"), [1])
 def test_parse_input_with_newline_and_comma(self):
     self.assertEqual(StringCalculator().parse_input("1,\n2,3"), [1, 2, 3])
 def test_add_comma_delimiter(self):
     self.assertEqual(StringCalculator().add("1,2,3"), 6)
 def test_parse_input_single_input(self):
     self.assertEqual(StringCalculator().parse_input("1"), [1])
 def test_parse_input_empty_string(self):
     self.assertEqual(StringCalculator().parse_input(""), [])
Example #17
0
 def setUp(self):
     self.calculator = StringCalculator()
def test_when_two_numbers_then_return_sum():
    assert StringCalculator().add("1,2") == 3
Example #19
0
def calculator() -> StringCalculator:
    return StringCalculator()
def test_when_different_delimiter_then_return_sum():
    assert StringCalculator().add("//;\n1;2;3") == 6
 def test_parse_input_with_arbitrary_length_delimiter(self):
     self.assertEqual(StringCalculator().parse_input("1$$$2$$$3", "$$$"),
                      [1, 2, 3])
 def test_single_input(self):
     self.assertEqual(StringCalculator().add_list([1]), 1)
def test_when_numbers_divided_by_new_line_then_return_sum():
    assert StringCalculator().add("1\n2,3") == 6
 def test_extract_delimiter_with_comma_delimiter(self):
     self.assertEqual(StringCalculator().extract_delimiter("//,\n1,2,3"),
                      ("1,2,3", ","))
def test_when_negative_then_throw_not_allowed():
    with pytest.raises(RuntimeError) as exception_info:
        StringCalculator().add("1,4,-1")
    assert 'negatives not allowed: -1' in str(exception_info.value)
 def test_extract_delimiter_with_custom_delimiter(self):
     self.assertEqual(StringCalculator().extract_delimiter("//$\n1,2,3"),
                      ("1,2,3", "$"))
def test_when_empty_string_return_zero():
    assert StringCalculator().add("") == 0
 def test_extract_delimiter_with_arbitrary_length_delimiter(self):
     self.assertEqual(
         StringCalculator().extract_delimiter("//$$$\n1$$$2$$$3"),
         ("1$$$2$$$3", "$$$"))
import pytest
from string_calculator import StringCalculator
"""
Copyright: @2019
Author: Zweli Mthethwa
"""
calculator = StringCalculator()


def test_add():
    assert calculator.add("") == 0
    assert calculator.add("1") == 1
    assert calculator.add("0,1,3,2") == 6
    assert calculator.add("1,2,3") == 6
    assert calculator.add("//;\n1;2") == 3
    assert calculator.add("//[***]\n1***2***3") == 6
    assert calculator.add("//[*][%]\n1*2%3") == 6
    # testing exceptions
    with pytest.raises(Exception) as e:
        assert calculator.add("-20,\n,3,2")
    assert str(e.value) == "negatives not allowed " + "-20"

    with pytest.raises(Exception) as e:
        assert calculator.add("-10,\n,-33,10, -79")
    assert str(e.value) == "negatives not allowed " + "-10,-33,-79"

    # testing for numbers bigger than 1000
    assert calculator.add("2, 1001") == 2
    assert calculator.add("//[(-_-')][%]\n1(-_-')2%3") == 6
 def test_add_empty_input(self):
     self.assertEqual(StringCalculator().add(""), 0)