Skip to content
Snippets Groups Projects
Commit 00a66199 authored by Marvin Serchimo's avatar Marvin Serchimo
Browse files

feature4

parent 35d9de70
No related merge requests found
feature4 0 → 100644
import re
import unittest
class StringCalculator:
def add(self, numbers: str) -> int:
# Feature 1: Leerer String ergibt 0
if not numbers:
return 0
# Vorbereitung für weiter features
if numbers.startswith("//"):
delimiter_end_index = numbers.index("\n")
delimiter = numbers[2:delimiter_end_index]
numbers = numbers[delimiter_end_index + 1:]
numbers = numbers.replace(delimiter, ",")
# Feature 3: Erlaube Zeilenumbrüche als Trenner
numbers = numbers.replace("\n", ",")
# Aufteilen der Zahlen durch Komma
number_list = numbers.split(",")
# Feature 4: Negativzahlen abfangen
negatives = []
for num in number_list:
if num.strip() != "":
value = int(num)
if value < 0:
negatives.append(value)
# Exception bei negativen Zahlen
if negatives:
raise ValueError(f"Negative numbers are not allowed: {', '.join(map(str, negatives))}")
# Feature 2: Beliebig viele Zahlen summieren
return sum(int(n) for n in number_list if n.strip() != "")
class TestStringCalculator(unittest.TestCase):
"""Test suite for the StringCalculator class."""
def setUp(self):
"""neue Instanz des StringCalculators vor jedem Test"""
self.calculator = StringCalculator()
def test_empty_string_returns_zero(self):
"""Feature 1: Leerer String soll 0 ergeben"""
self.assertEqual(self.calculator.add(""), 0)
def test_single_number_returns_value(self):
"""Ein einzelner Wert soll zurückgegeben werden"""
self.assertEqual(self.calculator.add("1"), 1)
def test_two_numbers_return_sum(self):
"""Zwei Zahlen sollen summiert werden"""
self.assertEqual(self.calculator.add("1,2"), 3)
def test_add_multiple_numbers(self):
"""Feature 2: Mehrere Zahlen summieren"""
self.assertEqual(self.calculator.add("1,2,3,4,5"), 15)
def test_add_numbers_with_newlines(self):
"""Feature 3: Zeilenumbrüche als Trennzeichen"""
self.assertEqual(self.calculator.add("1\n2\n3"), 6)
def test_add_negative_numbers(self):
"""Feature 4: Negative Zahlen sollen Fehler werfen"""
with self.assertRaises(ValueError) as e:
self.calculator.add("-1,2,-3")
self.assertEqual(str(e.exception), "Negative numbers are not allowed: -1, -3")
if __name__ == '__main__':
unittest.main()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment