Skip to content
Snippets Groups Projects
Commit f11ce06d authored by Daniel Rafeh's avatar Daniel Rafeh
Browse files

test successful

parent 68626b73
No related branches found
No related tags found
No related merge requests found
Pipeline #20040 passed
# Bei einer leeren Eingabe "" soll die Zahl 0 ausgegeben werden.
# Bei der Eingabe "1" soll die 1 ausgegeben werden.
# Bei der Eingabe von 2 Zahlen als Strings separiert durch "," (z.B. "1, 2") soll die Zahl 3 ausgegeben werden
# Bei der Eingabe "0, 5" soll die Zahl 5 ausgegeben werden.
# Bei der Eingabe von 3 Zahlen (z.B. 1,2,3) soll "only two numbers allowed" ausgegeben werden. --rausgenommen weil kein Gebrauch!
# Bei der Eingabe von Float-Werten z.B. 3.5 soll "only integers allowed" ausgegeben werden.
# Bei der Eingabe von Buchstaben z.B. 1, z soll "only integers allowed" ausgegeben werden.
# Bei der Eingabe von 2 Zahlen als Strings separiert durch "\n" (z.B. "1\n2,3") soll 6 ausgegeben werden
# Bei der Eingabe von negativen Zahlen (z.B. -3) soll "negatives not allowed" ausgegeben werden
# Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden (z.B. //;\n1;2 = 3)
# Bei Eingabe von Zahlen >1000 sollen diese ignoriert werden (z.B. 2 + 1001 = 2)
# Bei der Eingabe von Zahlen mit einem benutzerdefinierten Trennzeichen soll die Summe der Zahlen berechnet werden. Trennzeichen können unbegrenzt lang sein (z.B. “//[***]\n1***2***3” = 6).
import unittest
from abc import ABC, abstractmethod
class IStringCalculator(ABC):
@abstractmethod
def add(self, numbers: str) -> int:
pass
class StringCalculator(IStringCalculator):
def add(self, numbers: str) -> int:
'''Leere Eingabe soll 0 ausgeben'''
if numbers == "":
return 0
if numbers.startswith("//"):
delimiter = numbers[2:3]
numbers = numbers[4:]
list = numbers.split(delimiter)
else:
'''Zahlen werden aufgeteilt'''
list = numbers.replace("\n", ",").split(",")
result = 0
for num in list:
num = num.strip()
if num == "":
continue
'''Sicherstellen dass Floats nicht berücksichtigt werden'''
if "." in num:
return "only integers allowed"
'''Sicherstellen, dass keine Buchstaben verwendet werden dürfen'''
try:
number = int(num)
except ValueError:
return "only integers allowed"
'''Konvertirung von Strings zu Integer'''
if number < 0:
return "negatives not allowed"
if number > 1000:
continue
result += number
return result
class TestStringCalculator(unittest.TestCase):
def setUp(self):
self.c = StringCalculator()
def test_empty(self):
res = self.c.add("")
self.assertEqual(res, 0)
def test_oneNumber(self):
res = self.c.add("1")
self.assertEqual(res, 1)
def test_addingTwoNumbers(self):
res = self.c.add("1,2")
self.assertEqual(res, 3)
def test_addingTwoNumbersWithZero(self):
res = self.c.add("0,5")
self.assertEqual(res, 5)
def test_handleFloat(self):
res = self.c.add("3.5")
self.assertEqual(res, "only integers allowed")
def test_handleLetter(self):
res = self.c.add("1, z")
self.assertEqual(res, "only integers allowed")
def test_addWithBackslashN(self):
res = self.c.add("1\n2,3")
self.assertEqual(res, 6)
def test_negativeValues(self):
res = self.c.add("-3")
self.assertEqual(res, "negatives not allowed")
def test_delimiter(self):
res = self.c.add("//;\n1;2")
self.assertEqual(res, 3)
def test_thousandone(self):
res = self.c.add("2, 1001")
self.assertEqual(res, 2)
if __name__ == "__main__":
unittest.main()
\ No newline at end of file
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