test_strings.py
153 lines
| 5.7 KiB
| text/x-python
|
PythonLexer
Jonathan Frederic
|
r11902 | """ | ||
Module with tests for Strings | ||||
""" | ||||
#----------------------------------------------------------------------------- | ||||
# Copyright (c) 2013, the IPython Development Team. | ||||
# | ||||
# Distributed under the terms of the Modified BSD License. | ||||
# | ||||
# The full license is in the file COPYING.txt, distributed with this software. | ||||
#----------------------------------------------------------------------------- | ||||
#----------------------------------------------------------------------------- | ||||
# Imports | ||||
#----------------------------------------------------------------------------- | ||||
Paul Ivanov
|
r11974 | import os | ||
Jonathan Frederic
|
r11902 | |||
from ...tests.base import TestsBase | ||||
Jonathan Frederic
|
r11930 | from ..strings import (wrap_text, html2text, add_anchor, strip_dollars, | ||
MinRK
|
r11972 | strip_files_prefix, get_lines, comment_lines, ipython2python, posix_path, | ||
Brian E. Granger
|
r12706 | add_prompts | ||
MinRK
|
r11972 | ) | ||
Jonathan Frederic
|
r11902 | |||
#----------------------------------------------------------------------------- | ||||
# Class | ||||
#----------------------------------------------------------------------------- | ||||
class TestStrings(TestsBase): | ||||
def test_wrap_text(self): | ||||
Jonathan Frederic
|
r11934 | """wrap_text test""" | ||
Jonathan Frederic
|
r11902 | test_text = """ | ||
Tush! never tell me; I take it much unkindly | ||||
That thou, Iago, who hast had my purse | ||||
As if the strings were thine, shouldst know of this. | ||||
""" | ||||
for length in [30,5,1]: | ||||
Thomas Kluyver
|
r12373 | self._confirm_wrap_text(test_text, length) | ||
Jonathan Frederic
|
r11902 | |||
Jonathan Frederic
|
r11935 | |||
Jonathan Frederic
|
r11902 | def _confirm_wrap_text(self, text, length): | ||
for line in wrap_text(text, length).split('\n'): | ||||
assert len(line) <= length | ||||
Jonathan Frederic
|
r11935 | |||
Jonathan Frederic
|
r11902 | def test_html2text(self): | ||
Jonathan Frederic
|
r11934 | """html2text test""" | ||
Jonathan Frederic
|
r11902 | #TODO: More tests | ||
Jonathan Frederic
|
r11936 | self.assertEqual(html2text('<name>joe</name>'), 'joe') | ||
Jonathan Frederic
|
r11902 | |||
def test_add_anchor(self): | ||||
Jonathan Frederic
|
r11934 | """add_anchor test""" | ||
Jonathan Frederic
|
r11902 | #TODO: More tests | ||
Jonathan Frederic
|
r11927 | results = add_anchor('<b>Hello World!</b>') | ||
Jonathan Frederic
|
r11925 | assert 'Hello World!' in results | ||
assert 'id="' in results | ||||
assert 'class="anchor-link"' in results | ||||
assert '<b' in results | ||||
assert '</b>' in results | ||||
Jonathan Frederic
|
r11902 | |||
MinRK
|
r13844 | def test_add_anchor_fail(self): | ||
"""add_anchor does nothing when it fails""" | ||||
html = '<h1>Hello <br>World!</h1>' | ||||
results = add_anchor(html) | ||||
self.assertEqual(html, results) | ||||
Jonathan Frederic
|
r11902 | def test_strip_dollars(self): | ||
Jonathan Frederic
|
r11934 | """strip_dollars test""" | ||
Jonathan Frederic
|
r11902 | tests = [ | ||
('', ''), | ||||
('$$', ''), | ||||
('$H$', 'H'), | ||||
('$He', 'He'), | ||||
('H$el', 'H$el'), | ||||
('Hell$', 'Hell'), | ||||
('Hello', 'Hello'), | ||||
('W$o$rld', 'W$o$rld')] | ||||
for test in tests: | ||||
Thomas Kluyver
|
r12373 | self._try_strip_dollars(test[0], test[1]) | ||
Jonathan Frederic
|
r11902 | |||
def _try_strip_dollars(self, test, result): | ||||
Jonathan Frederic
|
r11936 | self.assertEqual(strip_dollars(test), result) | ||
Jonathan Frederic
|
r11902 | |||
def test_strip_files_prefix(self): | ||||
Jonathan Frederic
|
r11934 | """strip_files_prefix test""" | ||
Jonathan Frederic
|
r11902 | tests = [ | ||
('', ''), | ||||
('/files', '/files'), | ||||
('test="/files"', 'test="/files"'), | ||||
('My files are in `files/`', 'My files are in `files/`'), | ||||
Peter Davis
|
r13593 | ('<a href="files/test.html">files/test.html</a>', '<a href="test.html">files/test.html</a>'), | ||
MinRK
|
r13866 | ('<a href="/files/test.html">files/test.html</a>', '<a href="test.html">files/test.html</a>'), | ||
("<a href='files/test.html'>files/test.html</a>", "<a href='test.html'>files/test.html</a>"), | ||||
('<img src="files/url/location.gif">', '<img src="url/location.gif">'), | ||||
('<img src="/files/url/location.gif">', '<img src="url/location.gif">'), | ||||
Peter Davis
|
r13593 | ('hello![caption]', 'hello![caption]'), | ||
('hello![caption](/url/location.gif)', 'hello![caption](/url/location.gif)'), | ||||
('hello![caption](url/location.gif)', 'hello![caption](url/location.gif)'), | ||||
('hello![caption](url/location.gif)', 'hello![caption](url/location.gif)'), | ||||
('hello![caption](files/url/location.gif)', 'hello![caption](url/location.gif)'), | ||||
MinRK
|
r13866 | ('hello![caption](/files/url/location.gif)', 'hello![caption](url/location.gif)'), | ||
('hello [text](/files/url/location.gif)', 'hello [text](url/location.gif)'), | ||||
('hello [text space](files/url/location.gif)', 'hello [text space](url/location.gif)'), | ||||
] | ||||
Jonathan Frederic
|
r11902 | for test in tests: | ||
Thomas Kluyver
|
r12373 | self._try_files_prefix(test[0], test[1]) | ||
Jonathan Frederic
|
r11902 | |||
def _try_files_prefix(self, test, result): | ||||
Jonathan Frederic
|
r11936 | self.assertEqual(strip_files_prefix(test), result) | ||
Jonathan Frederic
|
r11902 | |||
def test_comment_lines(self): | ||||
Jonathan Frederic
|
r11934 | """comment_lines test""" | ||
Jonathan Frederic
|
r11902 | for line in comment_lines('hello\nworld\n!').split('\n'): | ||
assert line.startswith('# ') | ||||
for line in comment_lines('hello\nworld\n!', 'beep').split('\n'): | ||||
assert line.startswith('beep') | ||||
def test_get_lines(self): | ||||
Jonathan Frederic
|
r11934 | """get_lines test""" | ||
Jonathan Frederic
|
r11902 | text = "hello\nworld\n!" | ||
Jonathan Frederic
|
r11936 | self.assertEqual(get_lines(text, start=1), "world\n!") | ||
self.assertEqual(get_lines(text, end=2), "hello\nworld") | ||||
self.assertEqual(get_lines(text, start=2, end=5), "!") | ||||
self.assertEqual(get_lines(text, start=-2), "world\n!") | ||||
Jonathan Frederic
|
r11902 | |||
def test_ipython2python(self): | ||||
Jonathan Frederic
|
r11934 | """ipython2python test""" | ||
Jonathan Frederic
|
r11902 | #TODO: More tests | ||
Jonathan Frederic
|
r11925 | results = ipython2python(u'%%pylab\nprint("Hello-World")').replace("u'", "'") | ||
self.fuzzy_compare(results, u"get_ipython().run_cell_magic('pylab', '', 'print(\"Hello-World\")')", | ||||
Jonathan Frederic
|
r11923 | ignore_spaces=True, ignore_newlines=True) | ||
MinRK
|
r11972 | |||
def test_posix_path(self): | ||||
Brian E. Granger
|
r12706 | """posix_path test""" | ||
MinRK
|
r11972 | path_list = ['foo', 'bar'] | ||
expected = '/'.join(path_list) | ||||
Paul Ivanov
|
r11974 | native = os.path.join(*path_list) | ||
MinRK
|
r11972 | filtered = posix_path(native) | ||
self.assertEqual(filtered, expected) | ||||
Brian E. Granger
|
r12706 | |||
def test_add_prompts(self): | ||||
"""add_prompts test""" | ||||
text1 = """for i in range(10):\n i += 1\n print i""" | ||||
text2 = """>>> for i in range(10):\n... i += 1\n... print i""" | ||||
self.assertEqual(text2, add_prompts(text1)) | ||||