|
|
# -*- coding: utf-8
|
|
|
"""Tests for prompt generation."""
|
|
|
|
|
|
import unittest
|
|
|
|
|
|
from IPython.core.prompts import LazyEvaluate
|
|
|
from IPython.testing.globalipapp import get_ipython
|
|
|
from IPython.utils.py3compat import unicode_type
|
|
|
|
|
|
ip = get_ipython()
|
|
|
|
|
|
|
|
|
class PromptTests(unittest.TestCase):
|
|
|
def test_lazy_eval_unicode(self):
|
|
|
u = u'ünicødé'
|
|
|
lz = LazyEvaluate(lambda : u)
|
|
|
# str(lz) would fail
|
|
|
self.assertEqual(unicode_type(lz), u)
|
|
|
self.assertEqual(format(lz), u)
|
|
|
|
|
|
def test_lazy_eval_nonascii_bytes(self):
|
|
|
u = u'ünicødé'
|
|
|
b = u.encode('utf8')
|
|
|
lz = LazyEvaluate(lambda : b)
|
|
|
# unicode(lz) would fail
|
|
|
self.assertEqual(str(lz), str(b))
|
|
|
self.assertEqual(format(lz), str(b))
|
|
|
|
|
|
def test_lazy_eval_float(self):
|
|
|
f = 0.503
|
|
|
lz = LazyEvaluate(lambda : f)
|
|
|
|
|
|
self.assertEqual(str(lz), str(f))
|
|
|
self.assertEqual(unicode_type(lz), unicode_type(f))
|
|
|
self.assertEqual(format(lz), str(f))
|
|
|
self.assertEqual(format(lz, '.1'), '0.5')
|
|
|
|
|
|
|