##// END OF EJS Templates
test LazyEval with float and format string
MinRK -
Show More
@@ -1,95 +1,101 b''
1 1 # -*- coding: utf-8
2 2 """Tests for prompt generation."""
3 3
4 4 import unittest
5 5
6 6 import os
7 7 import nose.tools as nt
8 8
9 9 from IPython.testing import tools as tt, decorators as dec
10 10 from IPython.core.prompts import PromptManager, LazyEvaluate
11 11 from IPython.testing.globalipapp import get_ipython
12 12 from IPython.utils import py3compat
13 13 from IPython.utils.tempdir import TemporaryDirectory
14 14
15 15 ip = get_ipython()
16 16
17 17
18 18 class PromptTests(unittest.TestCase):
19 19 def setUp(self):
20 20 self.pm = PromptManager(shell=ip, config=ip.config)
21 21
22 22 def test_multiline_prompt(self):
23 23 self.pm.in_template = "[In]\n>>>"
24 24 self.pm.render('in')
25 25 self.assertEqual(self.pm.width, 3)
26 26 self.assertEqual(self.pm.txtwidth, 3)
27 27
28 28 self.pm.in_template = '[In]\n'
29 29 self.pm.render('in')
30 30 self.assertEqual(self.pm.width, 0)
31 31 self.assertEqual(self.pm.txtwidth, 0)
32 32
33 33 def test_translate_abbreviations(self):
34 34 def do_translate(template):
35 35 self.pm.in_template = template
36 36 return self.pm.templates['in']
37 37
38 38 pairs = [(r'%n>', '{color.number}{count}{color.prompt}>'),
39 39 (r'\T', '{time}'),
40 40 (r'\n', '\n')
41 41 ]
42 42
43 43 tt.check_pairs(do_translate, pairs)
44 44
45 45 def test_user_ns(self):
46 46 self.pm.color_scheme = 'NoColor'
47 47 ip.ex("foo='bar'")
48 48 self.pm.in_template = "In [{foo}]"
49 49 prompt = self.pm.render('in')
50 50 self.assertEquals(prompt, u'In [bar]')
51 51
52 52 def test_builtins(self):
53 53 self.pm.color_scheme = 'NoColor'
54 54 self.pm.in_template = "In [{int}]"
55 55 prompt = self.pm.render('in')
56 56 self.assertEquals(prompt, u"In [%r]" % int)
57 57
58 58 def test_undefined(self):
59 59 self.pm.color_scheme = 'NoColor'
60 60 self.pm.in_template = "In [{foo_dne}]"
61 61 prompt = self.pm.render('in')
62 62 self.assertEquals(prompt, u"In [<ERROR: 'foo_dne' not found>]")
63 63
64 64 def test_render(self):
65 65 self.pm.in_template = r'\#>'
66 66 self.assertEqual(self.pm.render('in',color=False), '%d>' % ip.execution_count)
67 67
68 68 def test_render_unicode_cwd(self):
69 69 save = os.getcwdu()
70 70 with TemporaryDirectory(u'ünicødé') as td:
71 71 os.chdir(td)
72 72 self.pm.in_template = r'\w [\#]'
73 73 p = self.pm.render('in', color=False)
74 74 self.assertEquals(p, u"%s [%i]" % (os.getcwdu(), ip.execution_count))
75 75 os.chdir(save)
76 76
77 77 def test_lazy_eval_unicode(self):
78 78 u = u'ünicødé'
79 79 lz = LazyEvaluate(lambda : u)
80 80 self.assertEquals(str(lz), py3compat.unicode_to_str(u))
81 81 self.assertEquals(unicode(lz), u)
82 82 self.assertEquals(format(lz), u)
83 83
84 84 def test_lazy_eval_nonascii_bytes(self):
85 85 u = u'ünicødé'
86 86 b = u.encode('utf8')
87 87 lz = LazyEvaluate(lambda : b)
88 if py3compat.PY3:
89 88 self.assertEquals(str(lz), str(b))
90 89 self.assertEquals(format(lz), str(b))
91 else:
92 self.assertEquals(str(lz), b)
90 if not py3compat.PY3:
93 91 self.assertRaises(UnicodeDecodeError, unicode, lz)
94 self.assertRaises(UnicodeDecodeError, format, lz)
92
93 def test_lazy_eval_float(self):
94 f = 0.503
95 lz = LazyEvaluate(lambda : f)
96
97 self.assertEquals(str(lz), str(f))
98 self.assertEquals(unicode(lz), unicode(f))
99 self.assertEquals(format(lz), str(f))
100 self.assertEquals(format(lz, '.1'), '0.5')
95 101
General Comments 0
You need to be logged in to leave comments. Login now