summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2017-07-24 00:40:01 +0000
committerrsiddharth <s@ricketyspace.net>2017-07-24 00:40:01 +0000
commitb5bc0fc9cbe3df899a12ec1bfe90bd8fa21ddd74 (patch)
tree87223c1645ba9c9f4c40a61ce152a79a57dd4af7 /tests
parent40861fcbc949bf1f1835399f76e096192bccb319 (diff)
md_tw.py: Add Text Wrap classes (derived from mistune' classes).
* md_tw.py (TWBlockLexer, TWInlineLexer, TWRenderer) (TWMarkdown): New classes. * tests/data/paragraphs-with-inline-wrapped.md: New file. * tests/data/paragraphs-with-inline.md: New file. * tests/data/paragraphs-wrapped.md: New file. * tests/data/paragraphs.md: New file. * tests/test_md_tw.py (TestTWBlockLexer, TestTWInlineLexer, TestTWRenderer, TestTWMarkdown) (TestTextWrapParagraphs): New test classes.
Diffstat (limited to 'tests')
-rw-r--r--tests/data/paragraphs-with-inline-wrapped.md62
-rw-r--r--tests/data/paragraphs-with-inline.md47
-rw-r--r--tests/data/paragraphs-wrapped.md60
-rw-r--r--tests/data/paragraphs.md45
-rw-r--r--tests/test_md_tw.py150
5 files changed, 363 insertions, 1 deletions
diff --git a/tests/data/paragraphs-with-inline-wrapped.md b/tests/data/paragraphs-with-inline-wrapped.md
new file mode 100644
index 0000000..01761a4
--- /dev/null
+++ b/tests/data/paragraphs-with-inline-wrapped.md
@@ -0,0 +1,62 @@
+IPSUM dolor sit amet, consectetur adipiscing elit. Morbi aliquam felis
+nec fermentum lobortis. Donec fringilla lorem non scelerisque volutpat.
+Vestibulum eleifend commodo nulla sit amet commodo. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+Proin hendrerit consectetur dui, non convallis enim bibendum non.
+Curabitur elementum quam augue, ac ullamcorper felis faucibus nec. Proin
+vestibulum risus *rutrum* nunc luctus aliquam at non tellus. Curabitur
+congue, orci ut consectetur suscipit, ligula orci eleifend metus, ac
+aliquam nisl orci a ligula. Aliquam aliquet mauris sed massa malesuada
+lobortis. Aenean odio eros, eleifend at imperdiet nec, pulvinar vitae
+dui. Ut ullamcorper ligula ligula, vitae egestas urna rutrum nec. Aenean
+aliquet mi eget tincidunt pharetra. _Nam pellentesque enim et_ posuere
+porttitor. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas.
+
+PRETIUM velit, ut consectetur odio. Mauris ac mattis magna. Quisque
+tempus nunc non gravida iaculis. Suspendisse sagittis justo nibh, a
+dapibus [ligula scelerisque et. Suspendisse euismod sapien in velit
+venenatis](http://autie.io), in consequat libero lobortis. Maecenas sem
+purus, feugiat at dictum a, viverra eget metus. Phasellus aliquet nulla
+eget pellentesque rutrum. Mauris ac porta ipsum. Aenean vel imperdiet
+enim, sed egestas augue.
+
+TACULIS eros vehicula mauris vulputate molestie. Nulla non quam sit amet
+ex sagittis gravida. Pellentesque at massa ac enim finibus egestas.
+Morbi et tincidunt leo, sed laoreet neque. Duis in mollis lorem. Mauris
+a interdum dui. Donec mattis nulla eu libero sollicitudin ornare.
+Phasellus lobortis, mi [sit amet aliquam tempus][0], risus urna iaculis
+ante, id sodales magna nulla non tellus. Nullam erat urna, molestie
+malesuada lacinia eu, interdum sed eros. Pellentesque vestibulum mattis
+nibh, ut commodo mi posuere a. Donec ornare neque at arcu condimentum
+tempus. Pellentesque vehicula velit id mauris faucibus volutpat. Integer
+sollicitudin sem nec nulla accumsan, vitae eleifend nibh venenatis.
+Nulla ut rhoncus massa.
+
+[0]: https:///tem.us/blog/2110/after-singularity.html
+
+CURSUS id turpis hendrerit tincidunt. Nullam pulvinar odio vel nisi
+dapibus sollicitudin. Maecenas et odio eget nisl pretium malesuada. Cras
+ornare ipsum felis, pretium semper tortor finibus pellentesque. Sed
+blandit tincidunt diam, quis venenatis metus pretium vitae. Praesent
+gravida lectus sit amet metus mattis, sit amet interdum diam congue.
+Quisque vel efficitur augue. Quisque ante velit, suscipit et nulla at,
+condimentum egestas justo. Suspendisse suscipit mauris vitae egestas
+hendrerit. Duis gravida maximus accumsan. Integer mollis imperdiet
+tellus, et ornare dolor ultrices interdum. Integer tempus dapibus dolor,
+sit amet viverra urna. Vestibulum ante ipsum primis in faucibus orci
+luctus et ultrices posuere cubilia Curae; Vivamus vitae fermentum dui,
+eu malesuada risus. Proin ut tincidunt nisl.
+
+VITAE scelerisque quam. Sed pharetra purus ac suscipit aliquet. In hac
+habitasse platea dictumst. Etiam hendrerit diam porttitor nunc volutpat
+blandit. Sed commodo libero orci, at tempor massa posuere vitae. Etiam
+non felis lacus. Donec pulvinar, libero non elementum gravida, risus
+erat hendrerit magna, eget faucibus eros dolor aliquet quam. Curabitur
+sollicitudin dolor dui, venenatis rutrum diam vulputate a. Phasellus in
+dignissim erat, vel porttitor ex. Nulla at magna metus. Maecenas
+lobortis est sit amet ante luctus auctor. Etiam id tortor vel dui
+pretium varius vel vitae elit. Sed augue elit, mattis sit amet nulla
+fringilla, volutpat porttitor nulla. Suspendisse potenti. Praesent ac
+mauris in ex gravida semper. Donec lacinia magna eget ipsum bibendum
+mollis.
diff --git a/tests/data/paragraphs-with-inline.md b/tests/data/paragraphs-with-inline.md
new file mode 100644
index 0000000..5a215ba
--- /dev/null
+++ b/tests/data/paragraphs-with-inline.md
@@ -0,0 +1,47 @@
+IPSUM dolor sit amet, consectetur adipiscing elit. Morbi aliquam felis nec fermentum lobortis. Donec
+fringilla lorem non scelerisque volutpat. Vestibulum eleifend commodo nulla sit amet commodo. Class
+aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin
+hendrerit consectetur dui, non convallis enim bibendum non. Curabitur elementum quam augue, ac
+ullamcorper felis faucibus nec. Proin vestibulum risus *rutrum* nunc luctus aliquam at non
+tellus. Curabitur congue, orci ut consectetur suscipit, ligula orci eleifend metus, ac aliquam nisl
+orci a ligula. Aliquam aliquet mauris sed massa malesuada lobortis. Aenean odio eros, eleifend at
+imperdiet nec, pulvinar vitae dui. Ut ullamcorper ligula ligula, vitae egestas urna rutrum
+nec. Aenean aliquet mi eget tincidunt pharetra. _Nam pellentesque enim et_ posuere
+porttitor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis
+egestas.
+
+PRETIUM velit, ut consectetur odio. Mauris ac mattis magna. Quisque tempus nunc non gravida
+iaculis. Suspendisse sagittis justo nibh, a dapibus [ligula scelerisque
+et. Suspendisse euismod sapien in velit venenatis](http://autie.io), in consequat libero
+lobortis. Maecenas sem purus, feugiat at dictum a, viverra eget metus. Phasellus aliquet nulla eget
+pellentesque rutrum. Mauris ac porta ipsum. Aenean vel imperdiet enim, sed egestas augue.
+
+TACULIS eros vehicula mauris vulputate molestie. Nulla non quam sit amet ex sagittis
+gravida. Pellentesque at massa ac enim finibus egestas. Morbi et tincidunt leo, sed laoreet
+neque. Duis in mollis lorem. Mauris a interdum dui. Donec mattis nulla eu libero sollicitudin
+ornare. Phasellus lobortis, mi [sit amet aliquam tempus][0], risus urna iaculis ante, id sodales magna
+nulla non tellus. Nullam erat urna, molestie malesuada lacinia eu, interdum sed eros. Pellentesque
+vestibulum mattis nibh, ut commodo mi posuere a. Donec ornare neque at arcu condimentum
+tempus. Pellentesque vehicula velit id mauris faucibus volutpat. Integer sollicitudin sem nec nulla
+accumsan, vitae eleifend nibh venenatis. Nulla ut rhoncus massa.
+
+[0]: https:///tem.us/blog/2110/after-singularity.html
+
+CURSUS id turpis hendrerit tincidunt. Nullam pulvinar odio vel nisi dapibus sollicitudin. Maecenas
+et odio eget nisl pretium malesuada. Cras ornare ipsum felis, pretium semper tortor finibus
+pellentesque. Sed blandit tincidunt diam, quis venenatis metus pretium vitae. Praesent gravida
+lectus sit amet metus mattis, sit amet interdum diam congue. Quisque vel efficitur augue. Quisque
+ante velit, suscipit et nulla at, condimentum egestas justo. Suspendisse suscipit mauris vitae
+egestas hendrerit. Duis gravida maximus accumsan. Integer mollis imperdiet tellus, et ornare dolor
+ultrices interdum. Integer tempus dapibus dolor, sit amet viverra urna. Vestibulum ante ipsum primis
+in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus vitae fermentum dui, eu malesuada
+risus. Proin ut tincidunt nisl.
+
+VITAE scelerisque quam. Sed pharetra purus ac suscipit aliquet. In hac habitasse platea
+dictumst. Etiam hendrerit diam porttitor nunc volutpat blandit. Sed commodo libero orci, at tempor
+massa posuere vitae. Etiam non felis lacus. Donec pulvinar, libero non elementum gravida, risus erat
+hendrerit magna, eget faucibus eros dolor aliquet quam. Curabitur sollicitudin dolor dui, venenatis
+rutrum diam vulputate a. Phasellus in dignissim erat, vel porttitor ex. Nulla at magna
+metus. Maecenas lobortis est sit amet ante luctus auctor. Etiam id tortor vel dui pretium varius vel
+vitae elit. Sed augue elit, mattis sit amet nulla fringilla, volutpat porttitor nulla. Suspendisse
+potenti. Praesent ac mauris in ex gravida semper. Donec lacinia magna eget ipsum bibendum mollis.
diff --git a/tests/data/paragraphs-wrapped.md b/tests/data/paragraphs-wrapped.md
new file mode 100644
index 0000000..75f102c
--- /dev/null
+++ b/tests/data/paragraphs-wrapped.md
@@ -0,0 +1,60 @@
+IPSUM dolor sit amet, consectetur adipiscing elit. Morbi aliquam felis
+nec fermentum lobortis. Donec fringilla lorem non scelerisque volutpat.
+Vestibulum eleifend commodo nulla sit amet commodo. Class aptent taciti
+sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos.
+Proin hendrerit consectetur dui, non convallis enim bibendum non.
+Curabitur elementum quam augue, ac ullamcorper felis faucibus nec. Proin
+vestibulum risus rutrum nunc luctus aliquam at non tellus. Curabitur
+congue, orci ut consectetur suscipit, ligula orci eleifend metus, ac
+aliquam nisl orci a ligula. Aliquam aliquet mauris sed massa malesuada
+lobortis. Aenean odio eros, eleifend at imperdiet nec, pulvinar vitae
+dui. Ut ullamcorper ligula ligula, vitae egestas urna rutrum nec. Aenean
+aliquet mi eget tincidunt pharetra. Nam pellentesque enim et posuere
+porttitor. Pellentesque habitant morbi tristique senectus et netus et
+malesuada fames ac turpis egestas.
+
+PRETIUM velit, ut consectetur odio. Mauris ac mattis magna. Quisque
+tempus nunc non gravida iaculis. Suspendisse sagittis justo nibh, a
+dapibus ligula scelerisque et. Suspendisse euismod sapien in velit
+venenatis, in consequat libero lobortis. Maecenas sem purus, feugiat at
+dictum a, viverra eget metus. Phasellus aliquet nulla eget pellentesque
+rutrum. Mauris ac porta ipsum. Aenean vel imperdiet enim, sed egestas
+augue.
+
+TACULIS eros vehicula mauris vulputate molestie. Nulla non quam sit amet
+ex sagittis gravida. Pellentesque at massa ac enim finibus egestas.
+Morbi et tincidunt leo, sed laoreet neque. Duis in mollis lorem. Mauris
+a interdum dui. Donec mattis nulla eu libero sollicitudin ornare.
+Phasellus lobortis, mi sit amet aliquam tempus, risus urna iaculis ante,
+id sodales magna nulla non tellus. Nullam erat urna, molestie malesuada
+lacinia eu, interdum sed eros. Pellentesque vestibulum mattis nibh, ut
+commodo mi posuere a. Donec ornare neque at arcu condimentum tempus.
+Pellentesque vehicula velit id mauris faucibus volutpat. Integer
+sollicitudin sem nec nulla accumsan, vitae eleifend nibh venenatis.
+Nulla ut rhoncus massa.
+
+CURSUS id turpis hendrerit tincidunt. Nullam pulvinar odio vel nisi
+dapibus sollicitudin. Maecenas et odio eget nisl pretium malesuada. Cras
+ornare ipsum felis, pretium semper tortor finibus pellentesque. Sed
+blandit tincidunt diam, quis venenatis metus pretium vitae. Praesent
+gravida lectus sit amet metus mattis, sit amet interdum diam congue.
+Quisque vel efficitur augue. Quisque ante velit, suscipit et nulla at,
+condimentum egestas justo. Suspendisse suscipit mauris vitae egestas
+hendrerit. Duis gravida maximus accumsan. Integer mollis imperdiet
+tellus, et ornare dolor ultrices interdum. Integer tempus dapibus dolor,
+sit amet viverra urna. Vestibulum ante ipsum primis in faucibus orci
+luctus et ultrices posuere cubilia Curae; Vivamus vitae fermentum dui,
+eu malesuada risus. Proin ut tincidunt nisl.
+
+VITAE scelerisque quam. Sed pharetra purus ac suscipit aliquet. In hac
+habitasse platea dictumst. Etiam hendrerit diam porttitor nunc volutpat
+blandit. Sed commodo libero orci, at tempor massa posuere vitae. Etiam
+non felis lacus. Donec pulvinar, libero non elementum gravida, risus
+erat hendrerit magna, eget faucibus eros dolor aliquet quam. Curabitur
+sollicitudin dolor dui, venenatis rutrum diam vulputate a. Phasellus in
+dignissim erat, vel porttitor ex. Nulla at magna metus. Maecenas
+lobortis est sit amet ante luctus auctor. Etiam id tortor vel dui
+pretium varius vel vitae elit. Sed augue elit, mattis sit amet nulla
+fringilla, volutpat porttitor nulla. Suspendisse potenti. Praesent ac
+mauris in ex gravida semper. Donec lacinia magna eget ipsum bibendum
+mollis.
diff --git a/tests/data/paragraphs.md b/tests/data/paragraphs.md
new file mode 100644
index 0000000..88f3825
--- /dev/null
+++ b/tests/data/paragraphs.md
@@ -0,0 +1,45 @@
+IPSUM dolor sit amet, consectetur adipiscing elit. Morbi aliquam felis nec fermentum lobortis. Donec
+fringilla lorem non scelerisque volutpat. Vestibulum eleifend commodo nulla sit amet commodo. Class
+aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Proin
+hendrerit consectetur dui, non convallis enim bibendum non. Curabitur elementum quam augue, ac
+ullamcorper felis faucibus nec. Proin vestibulum risus rutrum nunc luctus aliquam at non
+tellus. Curabitur congue, orci ut consectetur suscipit, ligula orci eleifend metus, ac aliquam nisl
+orci a ligula. Aliquam aliquet mauris sed massa malesuada lobortis. Aenean odio eros, eleifend at
+imperdiet nec, pulvinar vitae dui. Ut ullamcorper ligula ligula, vitae egestas urna rutrum
+nec. Aenean aliquet mi eget tincidunt pharetra. Nam pellentesque enim et posuere
+porttitor. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis
+egestas.
+
+PRETIUM velit, ut consectetur odio. Mauris ac mattis magna. Quisque tempus nunc non gravida
+iaculis. Suspendisse sagittis justo nibh, a dapibus ligula scelerisque et. Suspendisse euismod
+sapien in velit venenatis, in consequat libero lobortis. Maecenas sem purus, feugiat at dictum a,
+viverra eget metus. Phasellus aliquet nulla eget pellentesque rutrum. Mauris ac porta ipsum. Aenean
+vel imperdiet enim, sed egestas augue.
+
+TACULIS eros vehicula mauris vulputate molestie. Nulla non quam sit amet ex sagittis
+gravida. Pellentesque at massa ac enim finibus egestas. Morbi et tincidunt leo, sed laoreet
+neque. Duis in mollis lorem. Mauris a interdum dui. Donec mattis nulla eu libero sollicitudin
+ornare. Phasellus lobortis, mi sit amet aliquam tempus, risus urna iaculis ante, id sodales magna
+nulla non tellus. Nullam erat urna, molestie malesuada lacinia eu, interdum sed eros. Pellentesque
+vestibulum mattis nibh, ut commodo mi posuere a. Donec ornare neque at arcu condimentum
+tempus. Pellentesque vehicula velit id mauris faucibus volutpat. Integer sollicitudin sem nec nulla
+accumsan, vitae eleifend nibh venenatis. Nulla ut rhoncus massa.
+
+CURSUS id turpis hendrerit tincidunt. Nullam pulvinar odio vel nisi dapibus sollicitudin. Maecenas
+et odio eget nisl pretium malesuada. Cras ornare ipsum felis, pretium semper tortor finibus
+pellentesque. Sed blandit tincidunt diam, quis venenatis metus pretium vitae. Praesent gravida
+lectus sit amet metus mattis, sit amet interdum diam congue. Quisque vel efficitur augue. Quisque
+ante velit, suscipit et nulla at, condimentum egestas justo. Suspendisse suscipit mauris vitae
+egestas hendrerit. Duis gravida maximus accumsan. Integer mollis imperdiet tellus, et ornare dolor
+ultrices interdum. Integer tempus dapibus dolor, sit amet viverra urna. Vestibulum ante ipsum primis
+in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus vitae fermentum dui, eu malesuada
+risus. Proin ut tincidunt nisl.
+
+VITAE scelerisque quam. Sed pharetra purus ac suscipit aliquet. In hac habitasse platea
+dictumst. Etiam hendrerit diam porttitor nunc volutpat blandit. Sed commodo libero orci, at tempor
+massa posuere vitae. Etiam non felis lacus. Donec pulvinar, libero non elementum gravida, risus erat
+hendrerit magna, eget faucibus eros dolor aliquet quam. Curabitur sollicitudin dolor dui, venenatis
+rutrum diam vulputate a. Phasellus in dignissim erat, vel porttitor ex. Nulla at magna
+metus. Maecenas lobortis est sit amet ante luctus auctor. Etiam id tortor vel dui pretium varius vel
+vitae elit. Sed augue elit, mattis sit amet nulla fringilla, volutpat porttitor nulla. Suspendisse
+potenti. Praesent ac mauris in ex gravida semper. Donec lacinia magna eget ipsum bibendum mollis.
diff --git a/tests/test_md_tw.py b/tests/test_md_tw.py
index 7d9e4d9..d8a7f92 100644
--- a/tests/test_md_tw.py
+++ b/tests/test_md_tw.py
@@ -18,9 +18,13 @@
# along with markdown-textwrap (see COPYING). If not, see
# <http://www.gnu.org/licenses/>.
-from nose.tools import *
+import textwrap
+
+from mistune import Renderer
+from nose.tools import assert_equal
from pkg_resources import resource_string, resource_filename
+from md_tw import TWBlockLexer, TWInlineLexer, TWRenderer, TWMarkdown
def _get_data(f):
rs = resource_string(__name__, '/'.join(['data', f]))
@@ -29,3 +33,147 @@ def _get_data(f):
def _get_data_path(f):
return resource_filename(__name__, '/'.join(['data', f]))
+
+
+class TestTWBlockLexer(object):
+
+ def setup(self):
+ self.bl = TWBlockLexer()
+
+
+ def test_default_rules_contents(self):
+ assert_equal(self.bl.default_rules, ['paragraph', 'text'])
+
+
+ def teardown(self):
+ pass
+
+
+class TestTWInlineLexer(object):
+
+ def setup(self):
+ renderer = Renderer()
+ self.il = TWInlineLexer(renderer)
+
+
+ def test_default_rules_contents(self):
+ assert_equal(self.il.default_rules, [])
+
+
+ def teardown(self):
+ pass
+
+
+class TestTWRenderer(object):
+
+ def setup(self):
+ pass
+
+
+ def test_tw_obj_with_default_width(self):
+ renderer = TWRenderer()
+
+ # Check existence of textwrap.TexWrapper object.
+ assert isinstance(renderer.tw, textwrap.TextWrapper)
+
+ # Check its width
+ assert_equal(renderer.tw.width, 72)
+
+
+ def test_tw_obj_with_custom_width(self):
+ renderer = TWRenderer(tw_width=80)
+
+ # Check existence of textwrap.TexWrapper object.
+ assert isinstance(renderer.tw, textwrap.TextWrapper)
+
+ # Check its width
+ assert_equal(renderer.tw.width, 80)
+
+
+ def test_tw_set_options_with_valid_opts(self):
+ renderer = TWRenderer()
+
+ # Set valid options
+ renderer._tw_set_options(
+ width=80,
+ initial_indent='> ',
+ subsequent_indent=' ',
+ drop_whitespace=False)
+
+ # Confirm options are set.
+ assert_equal(renderer.tw.width, 80)
+ assert_equal(renderer.tw.initial_indent, '> ')
+ assert_equal(renderer.tw.subsequent_indent, ' ')
+ assert_equal(renderer.tw.drop_whitespace, False)
+
+
+ def test_tw_set_options_with_invalid_opts(self):
+ renderer = TWRenderer()
+
+ # Set invalid options
+ renderer._tw_set_options(
+ erase_bumps=True,
+ destroy_ampersands=False,
+ end_width='வருகிறேன்',
+ insert_between_paragraphs='time bombs')
+
+ # Confirm options are not set.
+ assert_equal(getattr(renderer.tw, 'erase_bumps', None), None)
+ assert_equal(getattr(renderer.tw, 'destroy_ampersands',
+ None), None)
+ assert_equal(getattr(renderer.tw, 'end_width', None), None)
+ assert_equal(getattr(renderer.tw, 'insert_between_paragraphs',
+ None), None)
+
+
+ def teardown(self):
+ pass
+
+
+class TestTWMarkdown(object):
+
+ def setup(self):
+ self.md = TWMarkdown()
+
+
+ def test_renderer_obj(self):
+ assert isinstance(self.md.renderer, TWRenderer)
+
+
+ def test_inline_obj(self):
+ assert isinstance(self.md.inline, TWInlineLexer)
+
+
+ def test_block_obj(self):
+ assert isinstance(self.md.block, TWBlockLexer)
+
+
+ def teardown(self):
+ pass
+
+
+class TestTextWrapParagraphs(object):
+
+ def setup(self):
+ self.md = TWMarkdown()
+
+
+ def test_tw_plain_paragraphs(self):
+ txt = _get_data('paragraphs.md')
+ expected_wrapped_txt = _get_data('paragraphs-wrapped.md')
+
+ wrapped_txt = self.md(txt)
+ assert_equal(wrapped_txt, expected_wrapped_txt)
+
+
+ def test_tw_paragraphs_with_inline(self):
+ txt = _get_data('paragraphs-with-inline.md')
+ expected_wrapped_txt = _get_data(
+ 'paragraphs-with-inline-wrapped.md')
+
+ wrapped_txt = self.md(txt)
+ assert_equal(wrapped_txt, expected_wrapped_txt)
+
+
+ def teardown(self):
+ pass