import unittest
from my_string_calculator import StringCalculator  # Wasili

class TestStudent2OnMe(unittest.TestCase):
    def setUp(self):
        self.calc = StringCalculator()

    def test_add_empty(self):
        self.assertEqual(self.calc.add(""), 0)

    def test_add_one_string(self):
        self.assertEqual(self.calc.add("1"), 1)

    def test_add_two_string(self):
        self.assertEqual(self.calc.add("1,2"), 3)

    def test_add_multiple_string(self):
        self.assertEqual(self.calc.add("1,2,3,4,5,6,7"), 28)

    def test_add_new_lines(self):
        self.assertEqual(self.calc.add("1\n2,3,4"), 10)

    def test_add_exception(self):
        with self.assertRaises(ValueError) as context:
            self.calc.add("-5")
        self.assertEqual(str(context.exception), "Negatives not allowed: -5")

    def test_add_negative_numbers(self):
        with self.assertRaises(ValueError) as context:
            self.calc.add("-5,-2,-2")
        self.assertEqual(str(context.exception), "Negatives not allowed: -5, -2, -2")

    def test_add_different_delimiters(self):
        self.assertEqual(self.calc.add("//;\n1;2"), 3)

    def test_add_numbers_greater_than_1000(self):
        self.assertEqual(self.calc.add("2,1001"), 2)
        self.assertEqual(self.calc.add("2,10022\n6"), 8)

    def test_delimiters_of_any_length(self):
        self.assertEqual(self.calc.add("//[***]\n1***2***3"), 6)

    def test_delimiters_of_any_length2(self):
        self.assertEqual(self.calc.add("//[*+*+*]\n1*+*+*2*+*+*3*+*+*220"), 226)

if __name__ == "__main__":
    unittest.main()