test_strings.py
128 lines
| 4.2 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 | |||
Jonathan Frederic
|
r11935 | from IPython.testing import decorators as dec | ||
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, | ||
) | ||||
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]: | ||||
Jonathan Frederic
|
r11936 | yield 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 | |||
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: | ||||
Jonathan Frederic
|
r11936 | yield 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/`'), | ||||
('<a href="files/test.html">files/test.html</a>', '<a href="test.html">files/test.html</a>')] | ||||
for test in tests: | ||||
Jonathan Frederic
|
r11936 | yield 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): | ||||
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) | ||||