diff options
author | Tim Peters <tim.peters@gmail.com> | 2000-10-16 17:35:13 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2000-10-16 17:35:13 (GMT) |
commit | 98c8184f2faf72f6a061f45df579e0eee4d510cf (patch) | |
tree | e89183c55f19f44a354b883bebc7f3e4c1b2ad02 /Lib/test/test_math.py | |
parent | a8268e945778dac4e92421545573424eb495f918 (diff) | |
download | cpython-98c8184f2faf72f6a061f45df579e0eee4d510cf.zip cpython-98c8184f2faf72f6a061f45df579e0eee4d510cf.tar.gz cpython-98c8184f2faf72f6a061f45df579e0eee4d510cf.tar.bz2 |
Test for math.* exceptional behavior only in verbose mode, so that the
oddball platforms (where, e.g., math.exp(+huge) still fails to raise
OverflowError) don't fail the std test suite when run normally.
Diffstat (limited to 'Lib/test/test_math.py')
-rw-r--r-- | Lib/test/test_math.py | 70 |
1 files changed, 40 insertions, 30 deletions
diff --git a/Lib/test/test_math.py b/Lib/test/test_math.py index 1452035..b7fde0a 100644 --- a/Lib/test/test_math.py +++ b/Lib/test/test_math.py @@ -153,33 +153,43 @@ print 'tanh' testit('tanh(0)', math.tanh(0), 0) testit('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0) -print 'exceptions' # oooooh, *this* is a x-platform gamble! good luck - -try: - x = math.exp(-1000000000) -except: - # mathmodule.c is failing to weed out underflows from libm, or - # we've got an fp format with huge dynamic range - raise TestFailed("underflowing exp() should not have rasied an exception") -if x != 0: - raise TestFailed("underflowing exp() should have returned 0") - -# If this fails, probably using a strict IEEE-754 conforming libm, and x -# is +Inf afterwards. But Python wants overflows detected by default. -try: - x = math.exp(1000000000) -except OverflowError: - pass -else: - raise TestFailed("overflowing exp() didn't trigger OverflowError") - -# If this fails, it could be a puzzle. One odd possibility is that -# mathmodule.c's CHECK() macro is getting confused while comparing -# Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE -# as a result (and so raising OverflowError instead). -try: - x = math.sqrt(-1.0) -except ValueError: - pass -else: - raise TestFailed("sqrt(-1) didn't raise ValueError") +# RED_FLAG 16-Oct-2000 Tim +# While 2.0 is more consistent about exceptions than previous releases, it +# still fails this part of the test on some platforms. For now, we only +# *run* test_exceptions() in verbose mode, so that this isn't normally +# tested. + +def test_exceptions(): + print 'exceptions' + try: + x = math.exp(-1000000000) + except: + # mathmodule.c is failing to weed out underflows from libm, or + # we've got an fp format with huge dynamic range + raise TestFailed("underflowing exp() should not have raised " + "an exception") + if x != 0: + raise TestFailed("underflowing exp() should have returned 0") + + # If this fails, probably using a strict IEEE-754 conforming libm, and x + # is +Inf afterwards. But Python wants overflows detected by default. + try: + x = math.exp(1000000000) + except OverflowError: + pass + else: + raise TestFailed("overflowing exp() didn't trigger OverflowError") + + # If this fails, it could be a puzzle. One odd possibility is that + # mathmodule.c's CHECK() macro is getting confused while comparing + # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE + # as a result (and so raising OverflowError instead). + try: + x = math.sqrt(-1.0) + except ValueError: + pass + else: + raise TestFailed("sqrt(-1) didn't raise ValueError") + +if verbose: + test_exceptions() |