import unittest from dungeonsheets import spells, features, epub class MarkdownTestCase(unittest.TestCase): """Check that conversion of markdown formats to LaTeX code works correctly.""" def test_rst_bold(self): text = epub.rst_to_html("**hello**") self.assertEqual(text, "

hello

\n") def test_hit_dice(self): text = epub.rst_to_html("1d6+3") self.assertEqual(text.strip("\n"), '

1d6+3

') def test_no_text(self): text = epub.rst_to_html(None) self.assertEqual(text, "") def test_verbatim(self): text = epub.rst_to_html("``hello, world``") self.assertIn('

hello, world

', text) def test_literal_backslash(self): text = epub.rst_to_html(r"\\") self.assertEqual(r"

\

", text.strip("\n")) @unittest.skip( "Headings are all screwed up because it treats them as the document title" ) def test_headings(self): # Simple heading by itself text = epub.rst_to_html("Hello, world\n------------\n\nGoodbye, world") self.assertEqual("\\section*{Hello, world}\n", text) # Simple heading with leading whitespace text = epub.rst_to_html(" Hello, world\n ============\n") self.assertEqual("\\section*{Hello, world}\n", text) # Heading with text after it text = epub.rst_to_html("Hello, world\n============\n\nThis is some text") self.assertEqual("\\section*{Hello, world}\n\nThis is some text", text) # Heading with text before it text = epub.rst_to_html("This is a paragraph\n\nHello, world\n============\n") self.assertEqual("This is a paragraph\n\n\\section*{Hello, world}\n", text) # Check that levels of headings are parsed appropriately text = epub.rst_to_html("Hello, world\n^^^^^^^^^^^^\n") self.assertEqual("\\subsubsection*{Hello, world}\n", text) text = epub.rst_to_html("Hello, world\n^^^^^^^^^^^^\n", top_heading_level=3) self.assertEqual("\\subparagraph*{Hello, world}\n", text) # This is a bad heading missing with all the underline on one line text = epub.rst_to_html("Hello, world^^^^^^^^^^^^\n") self.assertEqual("Hello, world\\^\\^\\^\\^\\^\\^\\^\\^\\^\\^\\^\\^\n", text) def test_bullet_list(self): tex = epub.rst_to_html("\n- Hello\n- World\n\n") expected_tex = '' self.assertEqual(expected_tex, tex.strip("\n")) # Other bullet characters tex = epub.rst_to_html("\n* Hello\n* World\n\n") self.assertEqual(expected_tex, tex.strip("\n")) tex = epub.rst_to_html("\n+ Hello\n+ World\n\n") self.assertEqual(expected_tex, tex.strip("\n")) # A real list taken from a docstring real_list = """ - Secondhand (you have heard of the target) - +5 - Firsthand (you have met the target) - +0 - Familiar (you know the target well) - -5 """ tex = epub.rst_to_html(real_list) self.assertIn('