def test_sum_when_newlines_at_ends_of_numbers_in_string(self): self.assertEqual(add("\n123\n"), 6)
def test_sum_when_zero_numbers_in_string(self): self.assertEqual(add(""), 0)
def test_add_single_return_self(): assert stringcalc.add('2') == '2'
def test_sum_when_delimiter_specified_and_numbers_greater_than_9(self): self.assertEqual(add("//[;]\n1;20"), 21)
def test_sum_when_string_has_multiple_delimeters(self): self.assertEqual(add("//[*][%]\n1*2%3"), 6)
def test_sum_when_commas_and_newlines_in_string(self): self.assertEqual(add(",1\n2\n3,"), 6)
def test_sum_when_delimeter_not_specified(self): self.assertEqual(add("1,23\n4"), 10)
def test_add_custom_delim_return_sum(): assert stringcalc.add('//;\n1;2') == '3' assert stringcalc.add('//|\n1|2|3') == '6' assert stringcalc.add('//sep\n2sep3') == '5'
def test_add_invalid_delim_raise_error(): with pytest.raises(ValueError) as err: stringcalc.add('//|\n1|2,3') assert err.value.args[0] == "'|' expected but ',' found at position 3."
def test_add_duplicate_delim_raise_error(): with pytest.raises(ValueError) as err: stringcalc.add('175.2,\n35') assert err.value.args[0] == "Number expected but '\n' found at position 6."
def test_add_missing_endpos_raise_error(): with pytest.raises(ValueError) as err: stringcalc.add('1,2,') assert err.value.args[0] == "Number expected but EOF found."
def test_add_newline_delim_return_sum(): assert stringcalc.add('1\n2,3') == '6'
def test_add_multiple_return_sum(): assert stringcalc.add('2,3,7,4') == '16'
def test_add_pair_return_sum(): assert stringcalc.add('2,3') == '5'
def test_sum_when_commas_btwn_numbers_in_string(self): self.assertEqual(add("1,2,3"), 6) self.assertEqual(add("1,23"), 6)
def test_add_nonegs_raise_error(): with pytest.raises(ValueError) as err: stringcalc.add('-1,3') assert err.value.args[0] == "Negative not allowed : -1"
def test_sum_when_commas_at_ends_of_numbers_in_string(self): self.assertEqual(add(",123,"), 6)
def test_add_nonegs_multiple_raise_error(): with pytest.raises(ValueError) as err: stringcalc.add('2,-4,-5') assert err.value.args[0] == "Negative not allowed : -4, -5"
def test_sum_when_delimiter_specified(self): self.assertEqual(add("//[;]\n1;2"), 3)
def test_sum_when_one_number_in_string(self): self.assertEqual(add("1"), 1) self.assertEqual(add("2"), 2)
def test_error_message_when_exception_thrown_on_neg_number(self): with self.assertRaises(Exception) as error: add("//[;]\n1;-23") self.assertEqual(error.exception.message, 'negatives not allowed: -23')
def test_sum_when_two_numbers_in_string(self): self.assertEqual(add("12"), 3)
def test_sum_when_string_has_numbers_over_1000(self): self.assertEqual(add("//[oo]\n1oo1000oo1001"), 1001)
def test_sum_when_unknown_amount_of_numbers_in_string(self): self.assertEqual(add("1234"), 10) self.assertEqual(add("12345"), 15)
def test_sum_when_string_has_multiple_delimeters_with_more_than_one_char( self): self.assertEqual(add("//[*&][%%%%][^]\n1*&2%%%%3^4"), 10)
def test_sum_when_newlines_btwn_numbers_in_string(self): self.assertEqual(add("1\n2\n3"), 6) self.assertEqual(add("1\n23"), 6)
def test_sum_returned_to_console_when_given_string(self): output = StringIO.StringIO() sys.stdout = output add("//[*][%]\n1*2%3") sys.stdout = sys.__stdout__ self.assertEqual(output.getvalue(), "6\n")
def test_add_empty_return_0(): assert stringcalc.add('') == '0'