##// END OF EJS Templates
Update What's new documentation to reflect some of the work that's gone into 0.11.
Update What's new documentation to reflect some of the work that's gone into 0.11.

File last commit:

r3350:a41b73bf
r3816:a45f5fa9
Show More
test_formatters.py
74 lines | 1.8 KiB | text/x-python | PythonLexer
"""Tests for the Formatters.
"""
from math import pi
try:
import numpy
except:
numpy = None
import nose.tools as nt
from IPython.core.formatters import FormatterABC, PlainTextFormatter
class A(object):
def __repr__(self):
return 'A()'
class B(A):
def __repr__(self):
return 'B()'
def foo_printer(obj, pp, cycle):
pp.text('foo')
def test_pretty():
f = PlainTextFormatter()
f.for_type(A, foo_printer)
nt.assert_equals(f(A()), 'foo')
nt.assert_equals(f(B()), 'foo')
f.pprint = False
nt.assert_equals(f(A()), 'A()')
nt.assert_equals(f(B()), 'B()')
def test_deferred():
f = PlainTextFormatter()
def test_precision():
"""test various values for float_precision."""
f = PlainTextFormatter()
nt.assert_equals(f(pi), repr(pi))
f.float_precision = 0
if numpy:
po = numpy.get_printoptions()
nt.assert_equals(po['precision'], 0)
nt.assert_equals(f(pi), '3')
f.float_precision = 2
if numpy:
po = numpy.get_printoptions()
nt.assert_equals(po['precision'], 2)
nt.assert_equals(f(pi), '3.14')
f.float_precision = '%g'
if numpy:
po = numpy.get_printoptions()
nt.assert_equals(po['precision'], 2)
nt.assert_equals(f(pi), '3.14159')
f.float_precision = '%e'
nt.assert_equals(f(pi), '3.141593e+00')
f.float_precision = ''
if numpy:
po = numpy.get_printoptions()
nt.assert_equals(po['precision'], 8)
nt.assert_equals(f(pi), repr(pi))
def test_bad_precision():
"""test various invalid values for float_precision."""
f = PlainTextFormatter()
def set_fp(p):
f.float_precision=p
nt.assert_raises(ValueError, set_fp, '%')
nt.assert_raises(ValueError, set_fp, '%.3f%i')
nt.assert_raises(ValueError, set_fp, 'foo')
nt.assert_raises(ValueError, set_fp, -1)