x**2 should about equal x*x (including for a float x such that the result is

inf) but didn't; added a test to test_float to verify that, and ignored the
ERANGE value for errno in the pow operation to make the new test pass (with
help from Marilyn Davis at the Google Python Sprint -- thanks!).
This commit is contained in:
Alex Martelli 2006-08-23 20:42:02 +00:00
parent 29bef0bbaa
commit 20362a820b
2 changed files with 17 additions and 4 deletions

View file

@ -99,12 +99,25 @@ class IEEEFormatTestCase(unittest.TestCase):
('<f', LE_FLOAT_NAN)]:
struct.unpack(fmt, data)
# on an IEEE platform, "overflowing" operations produce infinity
class IEEEOperationsTestCase(unittest.TestCase):
if float.__getformat__("double").startswith("IEEE"):
def test_double_infinity(self):
big = 4.8e159
pro = big*big
self.assertEquals(repr(pro), 'inf')
sqr = big**2
self.assertEquals(repr(sqr), 'inf')
def test_main():
test_support.run_unittest(
FormatFunctionsTestCase,
UnknownFormatTestCase,
IEEEFormatTestCase)
IEEEFormatTestCase,
IEEEOperationsTestCase,
)
if __name__ == '__main__':
test_main()