Skip to content

Commit 8ea9369

Browse files
committed
Added upcasting test for complex numbers
1 parent 1764be7 commit 8ea9369

File tree

1 file changed

+34
-0
lines changed

1 file changed

+34
-0
lines changed

future/tests/test_int.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -655,6 +655,40 @@ def test_upcasting_to_floats(self):
655655
self.assertTrue(isinstance(a % 0.5, float))
656656
self.assertTrue(isinstance(0.5 % a, float))
657657

658+
def test_upcasting_to_complex(self):
659+
"""
660+
Integers should automatically be upcasted to complex numbers for
661+
arithmetic operations.
662+
663+
Python 3 cannot mod complex numbers so this does not have to be
664+
supported here.
665+
"""
666+
a = int(3)
667+
668+
# Addition with complex.
669+
self.assertEqual(a + 0.5j, 3.0 + 0.5j)
670+
self.assertEqual(0.5j + a, 3.0 + 0.5j)
671+
self.assertTrue(isinstance(a + 0.5j, complex))
672+
self.assertTrue(isinstance(0.5j + a, complex))
673+
674+
# Subtraction with complex.
675+
self.assertEqual(a - 0.5j, 3.0 - 0.5j)
676+
self.assertEqual(0.5j - a, -3.0 + 0.5j)
677+
self.assertTrue(isinstance(a - 0.5j, complex))
678+
self.assertTrue(isinstance(0.5j - a, complex))
679+
680+
# Multiplication with complex.
681+
self.assertEqual(a * 0.5j, 1.5j)
682+
self.assertEqual(0.5j * a, 1.5j)
683+
self.assertTrue(isinstance(a * 0.5j, complex))
684+
self.assertTrue(isinstance(0.5j * a, complex))
685+
686+
# Division with complex.
687+
self.assertEqual(a / 0.5j, -6.0j)
688+
self.assertEqual(0.5j / a, (0.5 / 3.0) * 1j)
689+
self.assertTrue(isinstance(a / 0.5j, complex))
690+
self.assertTrue(isinstance(0.5j / a, complex))
691+
658692

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

0 commit comments

Comments
 (0)