def main(): A = Fraction(2, 3) B = Fraction(4, 7) print('Дано: ', repr(A), ' и ', repr(B)) print('Сумма дробей: ', A + B) print('Разница: ', A - B) print('Умножение: ', A * B) print('Деление : ', A / B) print('Сумма дроби и целого (5): ', A + 5) print('Сумма целого (5) и дроби: ', 5 + A)
class FractionsLtMethodTests(unittest.TestCase): """Тестируем действия с дробями: дробь1 < дробь 2 """ def setUp(self): self.A = Fraction(1, 3) self.B = Fraction(2, 3) def test_first_fr_lt_second_fr(self): """тест: первая дробь меньше второй""" self.assertTrue(self.A.__lt__(self.B)) def test_first_fr_not_gt_second_fr(self): """тест: первая дробь не больше второй""" self.assertFalse(self.B.__lt__(self.A))
class FractionsGeMethodTests(unittest.TestCase): """Тестируем действия с дробями: дробь1 >= дробь 2 """ def setUp(self) -> None: self.A = Fraction(2, 3) self.B = Fraction(1, 3) def test_first_fr_ge_second_fr(self): """тест: первая дробь больше второй""" self.assertTrue(self.A.__ge__(self.B)) def test_first_fr_equal_second_fr(self): """тест: первая дробь равна второй""" F = Fraction(2, 3) self.assertTrue(self.A.__ge__(F)) def test_first_fr_not_ge_second_fr(self): """тест: вторая дробь не больше превой""" self.assertFalse(self.B.__ge__(self.A))
class FractionsIaddMethodTests(unittest.TestCase): """Тестируем действия с дробями: сложение с присваиванием""" def setUp(self): self.A = Fraction(1, 3) self.B = Fraction(2, 3) def test_iadd_fraction(self): """тест: составное присваивание - накопление результата""" for i in range(1, 5): self.A += 1 self.assertEqual(self.A.__str__(), '4(1/3)') def test_iadd_two_fractions(self): """тест: накопление одной дроби в другой""" for i in range(1, 5): self.A += self.B self.assertEqual(self.A.__str__(), '3')
def setUp(self): self.A = Fraction(2, 3) self.B = Fraction(4, 7) self.C = Fraction(3, 3) self.D = Fraction(4, 2) self.E = Fraction(-2, 3)
def setUp(self): """Дроби для тестов""" self.A = Fraction(3, 4)
def test_mul_correct_and_incorect_fraction(self): """тест: умножаем правильную дробь на неправильную""" B = Fraction(2, 1) F = self.A * B self.assertEqual(F.__str__(), '1(1/3)')
def setUp(self) -> None: self.A = Fraction(2, 3) self.B = Fraction(1, 3)
def test_display_fraction_simplified_gcd(self): """тест: дробь упрощается с помошью НОД (наименьшее общее кратное)""" F = Fraction(8, 16) self.assertEqual(F.__str__(), '1/2')
def test_display_num_div_den_none_remain(self): """тест: числитель делится на знаменатель без остатка""" F = Fraction(6, 2) self.assertEqual(F.__str__(), '3')
def test_display_num_equal_den(self): """тест: числитель равен знаменателю""" F = Fraction(3, 3) self.assertEqual(F.__str__(), '1')
def test_print_negative_incorrect_fraction(self): """тест: показывает отрицательную не правильную дробь""" F = Fraction(-9, 5) self.assertEqual(F.__str__(), '-1(4/5)')
def test_print_negative_correct_fraction(self): """тест: печатает отрицательную правильную дробь""" F = Fraction(-3, 5) self.assertEqual(F.__str__(), '-3/5')
def test_print_correct_fraction(self): """тест: печатает правильную дробь""" F = Fraction(7, 3) self.assertEqual(F.__str__(), '2(1/3)')
class FractionTests(unittest.TestCase): """Тестируем класс Fraction - дробь""" def setUp(self): """Дроби для тестов""" self.A = Fraction(3, 4) def test_fraction(self): """тест: у дроби есть числитель и знаменатель""" self.assertEqual(self.A.num, 3) self.assertEqual(self.A.den, 4) def test_display_fraction(self): """тест: представление дроби при вызове str(), print()""" self.assertEqual(self.A.__str__(), '3/4') def test_print_correct_fraction(self): """тест: печатает правильную дробь""" F = Fraction(7, 3) self.assertEqual(F.__str__(), '2(1/3)') def test_print_negative_correct_fraction(self): """тест: печатает отрицательную правильную дробь""" F = Fraction(-3, 5) self.assertEqual(F.__str__(), '-3/5') def test_print_negative_incorrect_fraction(self): """тест: показывает отрицательную не правильную дробь""" F = Fraction(-9, 5) self.assertEqual(F.__str__(), '-1(4/5)') def test_display_num_equal_den(self): """тест: числитель равен знаменателю""" F = Fraction(3, 3) self.assertEqual(F.__str__(), '1') def test_display_num_div_den_none_remain(self): """тест: числитель делится на знаменатель без остатка""" F = Fraction(6, 2) self.assertEqual(F.__str__(), '3') def test_display_fraction_simplified_gcd(self): """тест: дробь упрощается с помошью НОД (наименьшее общее кратное)""" F = Fraction(8, 16) self.assertEqual(F.__str__(), '1/2') def test_getNum_method(self): """тест: getNum возвращает числитель""" self.assertEqual(self.A.getNum(), '3') def test_getDen_method(self): """тест: getDen возвращает числитель""" self.assertEqual(self.A.getDen(), '4') def test_display_error_type_in_input_not_integer(self): """тест: возбуждаем исключение, если введены не целые числа""" with self.assertRaises(TypeError): Fraction(2.3, 3) def test_display_if_den_negative(self): """тест: если по ошибке введи отрицательный знаменатель""" F = Fraction(3, -4) self.assertEqual(F.__str__(), '3/4') def test_display_if_num_and_den_nedative(self): """тест: учитываем знак только в числителе""" F = Fraction(-3, -4) self.assertEqual(F.__str__(), '-3/4') def test_display_repr_method(self): """тест: отображаем дробь при вызове repr()""" self.assertEqual(repr(self.A), 'Дробь: 3/4')
def test_first_fr_equal_second_fr(self): """тест: первая дробь равна второй""" F = Fraction(2, 3) self.assertTrue(self.A.__ge__(F))
def test_display_error_type_in_input_not_integer(self): """тест: возбуждаем исключение, если введены не целые числа""" with self.assertRaises(TypeError): Fraction(2.3, 3)
def test_true_div_two_incorect_fraction(self): """тест: делим не правильные дроби""" F1 = Fraction(14, 8) F2 = Fraction(2, 1) F = F1 / F2 self.assertEqual(F.__str__(), '7/8')
def test_display_if_den_negative(self): """тест: если по ошибке введи отрицательный знаменатель""" F = Fraction(3, -4) self.assertEqual(F.__str__(), '3/4')
def test_first_fr_equal_second_fr(self): """тест: первая дробь эквивалентна второй""" F = Fraction(2, 3) self.assertTrue(self.A <= F)
def test_display_if_num_and_den_nedative(self): """тест: учитываем знак только в числителе""" F = Fraction(-3, -4) self.assertEqual(F.__str__(), '-3/4')
def setUp(self): self.A = Fraction(1, 3) self.B = Fraction(2, 3)
def test_mul_incorect_fraction(self): """тест: умножаем неправильные дроби""" F1 = Fraction(4, 5) F2 = Fraction(-4, 5) F = F1 * F2 self.assertEqual(F.__str__(), '-16/25')