diff --git a/String calculator b/String calculator index 1c969fab3e7d54a165db1a7794cc5b2275d85584..5cb2cbbb0120e2ec908bafbd6f8b279c34fd85ae 100644 --- a/String calculator +++ b/String calculator @@ -2,6 +2,17 @@ #test no string #test add 1 string #test adding 2 strings + +#add 3 strings +#add 4 strings +#add 6 strings + +#\n statt , bei 2 strings +#\n statt , bei mehreren strings + +# eine negative zahl +# mehrere negative zahlen + import unittest class StringCalculator: @@ -9,25 +20,47 @@ class StringCalculator: if not numbers: return 0 else: + numbers = numbers.replace('\n',',') number_list = numbers.split(',')#aufteilung der strings - if len(number_list) ==1: - return int(number_list[0])#bei einem string wird er in int umgewandelt - elif len(number_list)==2: - return int(number_list[0])+ int(number_list[1])#bei 2 strings wird beides in int verwandelt und die summe zurück gegeben(Position 1/0+Position 2/1) - return 0 + negative=[] #array für die negativen nummern + total_sum = 0 + for number_str in number_list: #jedes element in der liste wird durch genommen + if number_str: + number = int(number_str)# summierung der integer + if number <0: + negative.append(number) + total_sum += number + + if negative: + print(f"Negative Zahlen:{negative} ")#ausgabe negative zahlen + raise ValueError(f"negatives not allowed: {','.join(map(str, negative))}") + + return total_sum class TestStingCalculator(unittest.TestCase): + def setUp(self): + self.calculator = StringCalculator() def test_empty_string(self): - calculator = StringCalculator() - self.assertEqual(calculator.add(""), 0) #leerer string + 0 + self.assertEqual(self.calculator.add(""), 0) #leerer string + 0 def test_single_number(self): - calculator = StringCalculator() - self.assertEqual(calculator.add("5"),5) #eingabe von einem String + self.assertEqual(self.calculator.add("5"),5) #eingabe von einem String def test_multiple_numbers(self): - calculator=StringCalculator() - self.assertEqual(calculator.add("5,5"),10)#eingabe mehrere strings + self.assertEqual(self.calculator.add("5,5"),10)#eingabe mehrere strings + def test_unknowen_amount_of_numbers(self): + self.assertEqual(self.calculator.add("1,2,3"),6) + self.assertEqual(self.calculator.add("10,20,30,40"),100) + self.assertEqual(self.calculator.add("1,2,3,4,5,6"),21) + def test_numbers_seperated_by_newline(self): + self.assertEqual(self.calculator.add("1\n2"),3) + self.assertEqual(self.calculator.add("1\n2\n3"),6) + self.assertEqual(self.calculator.add("10,20\n30"),60) + + def test_negative_number_exception(self): + + with self.assertRaises(ValueError) as e: + self.calculator.add("-1,2") + self.assertEqual(str(e.exception), "negatives not allowed: -1") if __name__=='__main__': - unittest.main() - \ No newline at end of file + unittest.main() \ No newline at end of file