import unittest import sys import os sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from database import calculate_discount, get_discount_description class TestCalculations(unittest.TestCase): """Тестирование алгоритмов расчета скидок""" def test_1_discount_thresholds(self): """Тест пороговых значений скидок""" test_cases = [ (0, 0), (100000, 0), (149999, 0), (150000, 15), (175000, 15), (199999, 15), (200000, 30), (250000, 30), (299999, 30), (300000, 50), (500000, 50), (1000000, 50), ] for amount, expected_discount in test_cases: with self.subTest(amount=amount): self.assertEqual(calculate_discount(amount), expected_discount) def test_2_discount_descriptions(self): """Тест описаний скидок""" self.assertEqual(get_discount_description(0), '0% (до 150 000 руб.)') self.assertEqual(get_discount_description(15), '15% (150 000 - 199 999 руб.)') self.assertEqual(get_discount_description(30), '30% (200 000 - 299 999 руб.)') self.assertEqual(get_discount_description(50), '50% (300 000+ руб.)') self.assertEqual(get_discount_description(99), '0% (до 150 000 руб.)') def test_3_edge_cases(self): """Тест граничных случаев""" self.assertEqual(calculate_discount(150000), 15) self.assertEqual(calculate_discount(200000), 30) self.assertEqual(calculate_discount(300000), 50) self.assertEqual(calculate_discount(149999), 0) self.assertEqual(calculate_discount(199999), 15) self.assertEqual(calculate_discount(299999), 30) def test_4_negative_amounts(self): """Тест отрицательных сумм""" self.assertEqual(calculate_discount(-1000), 0) self.assertEqual(calculate_discount(-150000), 0) if __name__ == '__main__': unittest.main()