Skip to content
Snippets Groups Projects
Commit f6136f3f authored by linopino's avatar linopino
Browse files

Integration von Momos Code + Tests

parent 48aef9aa
No related branches found
No related tags found
2 merge requests!15Develop,!11Integration von Momos Code + Tests
#vorher im anderen projekt jetzt im neuen projekt
#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
# Delimiters:
# add numbers seperated by a custom delimiter
# Test with - Numbers
#numbers over 1000 should be ignored
#1001 + 2 should return 2
#1001 -2 should return negatives not allowed
#custom delimiters
#input "//[***]\n1***2***3"
#output 6
import unittest
import re
from src.stringcalculator import StringCalculator #Auskommentieren, falls andere Implementierung genutzt wird
'''
class StringCalculator:
def __init__(self):
self.called_count = 0
def add (self, numbers : str)-> int: #Erwartet Integer
if not numbers:
return 0
if numbers.startswith("//"):
delimiter_end_index = numbers.index("\n")
delimiter_section = numbers[2:delimiter_end_index]
numbers = numbers[delimiter_end_index +1:]
if delimiter_section.startswith("[")and delimiter_section.endswith("]"):
delimiters = re.findall(r'\[([^\]]+)\]',delimiter_section)
else:
delimiters= [delimiter_section]
for delimiters in delimiters:
numbers = numbers.replace(delimiters,",")
numbers = numbers.replace("\n",",")
number_list = numbers.split(',')#aufteilung der strings
negative = [] #array für die negativen nummern
numbers_to_add = []
#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)
elif number > 1000:
continue
else:
numbers_to_add.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))}")
self.called_count += 1
return sum(numbers_to_add)
def get_called_count(self):
return self.called_count
'''
class TestStingCalculator(unittest.TestCase):
def setUp(self):
self.calculator = StringCalculator()
def test_empty_string(self):
self.assertEqual(self.calculator.add(""), 0) #leerer string + 0
def test_single_number(self):
self.assertEqual(self.calculator.add("5"),5) #eingabe von einem String
def test_multiple_numbers(self):
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")
def test_multiple_negative_numbers_exception(self):
with self.assertRaises(ValueError)as e:
self.calculator.add("-1,-2,3")
self.assertEqual(str(e.exception),"negatives not allowed: -1,-2")
with self.assertRaises(ValueError) as e:
self.calculator.add("-1,-3,4")
self.assertEqual(str(e.exception),"negatives not allowed: -1,-3")
with self.assertRaises(ValueError) as e:
self.calculator.add("-1\n-3,4")
self.assertEqual(str(e.exception),"negatives not allowed: -1,-3")
def test_add_numbers_with_custom_delimiter(self):
self.assertEqual(self.calculator.add("//;\n1;2;3"),6)
self.assertEqual(self.calculator.add("//;\n1,2,3"),6)
with self.assertRaises(ValueError) as e:
self.calculator.add("//;\n-3,4")
self.assertEqual(str(e.exception),"negatives not allowed: -3")
def test_add_numbers_greater_than_1000(self):
self.assertEqual(self.calculator.add("1,1001,2,3"),6)
def test_add_numbers_greater_than_1000_1002(self):
self.assertEqual(self.calculator.add("1002,1,2,3"),6)
def test_add_numbers_greater_1000_and_minus(self):
with self.assertRaises(ValueError) as e:
self.calculator.add("//;\n-3,4;1001")
self.assertEqual(str(e.exception),"negatives not allowed: -3")
def test_custom_delimiter(self):
self.assertEqual(self.calculator.add("//[***]\n1***2***3"),6)
def test_custom_del(self):
self.assertEqual(self.calculator.add("//[+++]\n1+++2+++3"),6)
def test_custom_del2(self):
self.assertEqual(self.calculator.add("//[aa]\n1aa2aa3"),6)
if __name__=='__main__':
unittest.main()
# python -m unittest others.Momo.MomoStringCalculator -v
\ No newline at end of file
| Name | Interface break | Failed Testcases |
|------|-----------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Momo | no | test_add_multiple_negative_numbers (tests.testStringcalculator.TestStringCalculator) ... Negative Zahlen:[-10, -20, -30] negatives not allowed: -10,-20,-30 FAIL |
| Momo | no | test_add_single_negative_number (tests.testStringcalculator.TestStringCalculator) ... Negative Zahlen:[-2] negatives not allowed: -2 FAIL |
\ No newline at end of file
| Name | Interface break | Failed Testcases |
|------|-----------------|----------------------------------------------------------------------------------------------------------|
| Momo | no | test_add_numbers_greater_1000_and_minus (others.Momo.MomoStringCalculator.TestStingCalculator) ... FAIL |
| Momo | no | test_add_numbers_with_custom_delimiter (others.Momo.MomoStringCalculator.TestStingCalculator) ... FAIL |
| Momo | no | test_multiple_negative_numbers_exception (others.Momo.MomoStringCalculator.TestStingCalculator) ... FAIL |
| Momo | no | test_negative_number_exception (others.Momo.MomoStringCalculator.TestStingCalculator) ... FAIL |
\ No newline at end of file
......@@ -36,9 +36,12 @@ from others.Orlando.OrlandoStringCalculator import StringCalculator
import unittest
from others.Dani.DaniStringCalculator import IStringCalculator, StringCalculator
'''
import unittest
from others.Wasili.WasiliStringCalculator import IStringCalculator, StringCalculator
'''
import unittest
from others.Momo.MomoStringCalculator import StringCalculator
class TestStringCalculator(unittest.TestCase):
def setUp(self):
......
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