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

test successful

parent 3dd15b32
No related branches found
No related tags found
No related merge requests found
# 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
'''Zahlen mit Kommas werden aufgeteilt'''
list = numbers.replace("\n", ",").split(",")
for num in list:
if "." in num:
return "only integers allowed"
try:
int(num.strip())
except ValueError:
return "only integers allowed"
'''Konvertirung von Strings zu Integer'''
result = 0
for num in list:
result += int(num.strip())
'''Negative Ergebnisse nicht gestatten'''
if result < 0:
return "negatives not allowed"
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")
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