diff options
author | David Cournapeau <cournape@gmail.com> | 2008-12-30 03:19:53 +0000 |
---|---|---|
committer | David Cournapeau <cournape@gmail.com> | 2008-12-30 03:19:53 +0000 |
commit | 2fcb366d49db8ffbe248f30e9d25775653d24407 (patch) | |
tree | 50183b49970210746b3b761b23238fc1051ff8c6 /numpy | |
parent | 73a375a3adb140c270444e886b3df842e0b28a86 (diff) | |
parent | 6ffe6c549b39ee986e635861a112c8e1cea66109 (diff) | |
download | numpy-2fcb366d49db8ffbe248f30e9d25775653d24407.tar.gz |
Merged revisions 6236-6238 via svnmerge from
http://svn.scipy.org/svn/numpy/trunk
........
r6236 | cdavid | 2008-12-29 17:02:15 +0900 (Mon, 29 Dec 2008) | 1 line
Add nan/inf tests for formatting.
........
r6237 | cdavid | 2008-12-29 17:26:04 +0900 (Mon, 29 Dec 2008) | 1 line
Add test for real float types locale independance.
........
r6238 | cdavid | 2008-12-29 17:35:06 +0900 (Mon, 29 Dec 2008) | 1 line
Clearer error messages for formatting failures.
........
Diffstat (limited to 'numpy')
-rw-r--r-- | numpy/core/tests/test_print.py | 79 |
1 files changed, 75 insertions, 4 deletions
diff --git a/numpy/core/tests/test_print.py b/numpy/core/tests/test_print.py index 20490c2fd..a9db5e480 100644 --- a/numpy/core/tests/test_print.py +++ b/numpy/core/tests/test_print.py @@ -1,9 +1,13 @@ import numpy as np from numpy.testing import * +import locale +import sys + def check_float_type(tp): for x in [0, 1,-1, 1e10, 1e20] : - assert_equal(str(tp(x)), str(float(x))) + assert_equal(str(tp(x)), str(float(x)), + err_msg='Failed str formatting for type %s' % tp) def test_float_types(): """ Check formatting. @@ -16,11 +20,30 @@ def test_float_types(): for t in [np.float32, np.double, np.longdouble] : yield check_float_type, t +def check_nan_inf_float(tp): + for x in [float('inf'), float('-inf'), float('nan')]: + assert_equal(str(tp(x)), str(float(x)), + err_msg='Failed str formatting for type %s' % tp) + +def test_nan_inf_float(): + """ Check formatting. + + This is only for the str function, and only for simple types. + The precision of np.float and np.longdouble aren't the same as the + python float precision. + + """ + for t in [np.float32, np.double, np.longdouble] : + yield check_nan_inf_float, t + def check_complex_type(tp): for x in [0, 1,-1, 1e10, 1e20] : - assert_equal(str(tp(x)), str(complex(x))) - assert_equal(str(tp(x*1j)), str(complex(x*1j))) - assert_equal(str(tp(x + x*1j)), str(complex(x + x*1j))) + assert_equal(str(tp(x)), str(complex(x)), + err_msg='Failed str formatting for type %s' % tp) + assert_equal(str(tp(x*1j)), str(complex(x*1j)), + err_msg='Failed str formatting for type %s' % tp) + assert_equal(str(tp(x + x*1j)), str(complex(x + x*1j)), + err_msg='Failed str formatting for type %s' % tp) def test_complex_types(): """Check formatting. @@ -33,5 +56,53 @@ def test_complex_types(): for t in [np.complex64, np.cdouble, np.clongdouble] : yield check_complex_type, t +def has_french_locale(): + curloc = locale.getlocale(locale.LC_NUMERIC) + try: + if not sys.platform == 'win32': + locale.setlocale(locale.LC_NUMERIC, 'fr_FR') + else: + locale.setlocale(locale.LC_NUMERIC, 'FRENCH') + + st = True + except: + st = False + finally: + locale.setlocale(locale.LC_NUMERIC, locale=curloc) + + return st + +def _test_locale_independance(tp): + # XXX: How to query locale on a given system ? + + # French is one language where the decimal is ',' not '.', and should be + # relatively common on many systems + curloc = locale.getlocale(locale.LC_NUMERIC) + try: + if not sys.platform == 'win32': + locale.setlocale(locale.LC_NUMERIC, 'fr_FR') + else: + locale.setlocale(locale.LC_NUMERIC, 'FRENCH') + + assert_equal(str(tp(1.2)), str(float(1.2)), + err_msg='Failed locale test for type %s' % tp) + finally: + locale.setlocale(locale.LC_NUMERIC, locale=curloc) + +@np.testing.dec.skipif(not has_french_locale(), + "Skipping locale test, French locale not found") +def test_locale_single(): + return _test_locale_independance(np.float32) + +@np.testing.dec.skipif(not has_french_locale(), + "Skipping locale test, French locale not found") +def test_locale_double(): + return _test_locale_independance(np.double) + +@np.testing.dec.skipif(not has_french_locale(), + "Skipping locale test, French locale not found") +def test_locale_longdouble(): + return _test_locale_independance(np.longdouble) + if __name__ == "__main__": run_module_suite() |