def test_虚部の条件(self): with self.subTest("実部は整数以外の型であってはならない"): self.assertRaises(ImaginaryPartConditionError, lambda: PurelyImaginaryNumber("1")) with self.subTest("実部は0であってはならない"): self.assertRaises(ImaginaryPartConditionError, lambda: PurelyImaginaryNumber(0))
def test_2つの純虚数の同一性の判定(self): with self.subTest("3i と 3i は同一である"): self.assertEqual(PurelyImaginaryNumber(3), PurelyImaginaryNumber(3)) with self.subTest("3i と 4i は同一ではない"): self.assertNotEqual(PurelyImaginaryNumber(3), PurelyImaginaryNumber(4))
def test_純虚数の生成とその文字列表現(self): with self.subTest("正常系: 2 -> '2i'"): self.assertEqual("2i", PurelyImaginaryNumber(2).notation()) with self.subTest("準正常系: 1 -> 'i'"): self.assertEqual("i", PurelyImaginaryNumber(1).notation()) with self.subTest("準正常系: -1 -> '-i'"): self.assertEqual("-i", PurelyImaginaryNumber(-1).notation())
def test_check_equality(self): with self.subTest('check being equal'): i_4_1 = PurelyImaginaryNumber(MyInt(4)) i_4_2 = PurelyImaginaryNumber(MyInt(4)) self.assertTrue(i_4_1 == i_4_2) with self.subTest('check not being equal'): i_4 = PurelyImaginaryNumber(MyInt(4)) i_2 = PurelyImaginaryNumber(MyInt(2)) self.assertFalse(i_4 == i_2)
def test_purely_imaginary_number(self): with self.subTest('create 4i'): i_4 = PurelyImaginaryNumber(MyInt(4)) expected = '4i' actual = str(i_4) self.assertEqual(expected, actual) with self.subTest('create -2i'): minus_i_2 = PurelyImaginaryNumber(MyInt(-2)) expected = '-2i' actual = str(minus_i_2) self.assertEqual(expected, actual)
def test_purely_imaginary_number_with_1(self): with self.subTest('create i'): i_1 = PurelyImaginaryNumber(MyInt(1)) expected = 'i' actual = str(i_1) self.assertEqual(expected, actual) with self.subTest('create -i'): minus_i_1 = PurelyImaginaryNumber(MyInt(-1)) expected = '-i' actual = str(minus_i_1) self.assertEqual(expected, actual)
def test_conjugate(self): with self.subTest('check 4'): i_4 = PurelyImaginaryNumber(MyInt(4)) minus_i_4 = PurelyImaginaryNumber(MyInt(-4)) self.assertTrue(i_4.is_conjugate_to(minus_i_4)) with self.subTest('check 1'): i_1 = PurelyImaginaryNumber(MyInt(1)) minus_i_1 = PurelyImaginaryNumber(MyInt(-1)) self.assertTrue(i_1.is_conjugate_to(minus_i_1))
def test_共役な純虚数(self): with self.subTest("正常系: 3i と共役な純虚数は -3i"): self.assertEqual(PurelyImaginaryNumber(-3), PurelyImaginaryNumber(3).to_conjugate()) with self.subTest("準正常系: i と共役な純虚数は -i"): self.assertEqual(PurelyImaginaryNumber(-1), PurelyImaginaryNumber(1).to_conjugate()) with self.subTest("準正常系: -i と共役な純虚数は i"): self.assertEqual(PurelyImaginaryNumber(1), PurelyImaginaryNumber(-1).to_conjugate())
class ImaginaryNumber: def __init__(self, real_part: int, imaginary_part: int): self.real_part = RealNumber(real_part) self.imaginary_part = PurelyImaginaryNumber(imaginary_part) def __eq__(self, other: ImaginaryNumber) -> bool: return (self.real_part == other.real_part) and (self.imaginary_part == other.imaginary_part) def notation(self) -> str: if self.imaginary_part.value > 0: return f"{self.real_part.value} + {self.imaginary_part.notation()}" if self.imaginary_part.value < 0: return f"{self.real_part.value} - {self.imaginary_part.to_conjugate().notation()}" def to_conjugate(self) -> ImaginaryNumber: return ImaginaryNumber(self.real_part.value, self.imaginary_part.to_conjugate().value)
def __init__(self, real_part: int, imaginary_part: int): self.real_part = RealNumber(real_part) self.imaginary_part = PurelyImaginaryNumber(imaginary_part)
def test_raise_zero_error(self): with self.assertRaises(ValueError): PurelyImaginaryNumber(MyInt(0))