MCPcopy Index your code
hub / github.com/RustPython/RustPython / test_truediv

Method test_truediv

Lib/test/test_complex.py:107–197  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

105
106 @unittest.expectedFailure # TODO: RUSTPYTHON; AssertionError: floats nan and inf are not identical
107 def test_truediv(self):
108 simple_real = [float(i) for i in range(-5, 6)]
109 simple_complex = [complex(x, y) for x in simple_real for y in simple_real]
110 for x in simple_complex:
111 for y in simple_complex:
112 self.check_div(x, y)
113
114 # A naive complex division algorithm (such as in 2.0) is very prone to
115 # nonsense errors for these (overflows and underflows).
116 self.check_div(complex(1e200, 1e200), 1+0j)
117 self.check_div(complex(1e-200, 1e-200), 1+0j)
118
119 # Just for fun.
120 for i in range(100):
121 self.check_div(complex(random(), random()),
122 complex(random(), random()))
123
124 self.assertAlmostEqual(complex.__truediv__(2+0j, 1+1j), 1-1j)
125 self.assertRaises(TypeError, operator.truediv, 1j, None)
126 self.assertRaises(TypeError, operator.truediv, None, 1j)
127
128 for denom_real, denom_imag in [(0, NAN), (NAN, 0), (NAN, NAN)]:
129 z = complex(0, 0) / complex(denom_real, denom_imag)
130 self.assertTrue(isnan(z.real))
131 self.assertTrue(isnan(z.imag))
132 z = float(0) / complex(denom_real, denom_imag)
133 self.assertTrue(isnan(z.real))
134 self.assertTrue(isnan(z.imag))
135
136 self.assertComplexesAreIdentical(complex(INF, NAN) / 2,
137 complex(INF, NAN))
138
139 self.assertComplexesAreIdentical(complex(INF, 1)/(0.0+1j),
140 complex(NAN, -INF))
141
142 # test recover of infs if numerator has infs and denominator is finite
143 self.assertComplexesAreIdentical(complex(INF, -INF)/(1+0j),
144 complex(INF, -INF))
145 self.assertComplexesAreIdentical(complex(INF, INF)/(0.0+1j),
146 complex(INF, -INF))
147 self.assertComplexesAreIdentical(complex(NAN, INF)/complex(2**1000, 2**-1000),
148 complex(INF, INF))
149 self.assertComplexesAreIdentical(complex(INF, NAN)/complex(2**1000, 2**-1000),
150 complex(INF, -INF))
151
152 # test recover of zeros if denominator is infinite
153 self.assertComplexesAreIdentical((1+1j)/complex(INF, INF), (0.0+0j))
154 self.assertComplexesAreIdentical((1+1j)/complex(INF, -INF), (0.0+0j))
155 self.assertComplexesAreIdentical((1+1j)/complex(-INF, INF),
156 complex(0.0, -0.0))
157 self.assertComplexesAreIdentical((1+1j)/complex(-INF, -INF),
158 complex(-0.0, 0))
159 self.assertComplexesAreIdentical((INF+1j)/complex(INF, INF),
160 complex(NAN, NAN))
161 self.assertComplexesAreIdentical(complex(1, INF)/complex(INF, INF),
162 complex(NAN, NAN))
163 self.assertComplexesAreIdentical(complex(INF, 1)/complex(1, INF),
164 complex(NAN, NAN))

Callers

nothing calls this directly

Calls 8

check_divMethod · 0.95
assertAlmostEqualMethod · 0.95
isnanFunction · 0.90
assertTrueMethod · 0.80
__truediv__Method · 0.45
assertRaisesMethod · 0.45
assertEqualMethod · 0.45

Tested by

no test coverage detected