1""" 2Python Markdown 3 4A Python implementation of John Gruber's Markdown. 5 6Documentation: https://python-markdown.github.io/ 7GitHub: https://github.com/Python-Markdown/markdown/ 8PyPI: https://pypi.org/project/Markdown/ 9 10Started by Manfred Stienstra (http://www.dwerg.net/). 11Maintained for a few years by Yuri Takhteyev (http://www.freewisdom.org). 12Currently maintained by Waylan Limberg (https://github.com/waylan), 13Dmitry Shachnev (https://github.com/mitya57) and Isaac Muse (https://github.com/facelessuser). 14 15Copyright 2007-2018 The Python Markdown Project (v. 1.7 and later) 16Copyright 2004, 2005, 2006 Yuri Takhteyev (v. 0.2-1.6b) 17Copyright 2004 Manfred Stienstra (the original version) 18 19License: BSD (see LICENSE.md for details). 20""" 21 22from markdown.test_tools import TestCase 23 24 25class TestParagraphBlocks(TestCase): 26 27 def test_simple_paragraph(self): 28 self.assertMarkdownRenders( 29 'A simple paragraph.', 30 31 '<p>A simple paragraph.</p>' 32 ) 33 34 def test_blank_line_before_paragraph(self): 35 self.assertMarkdownRenders( 36 '\nA paragraph preceded by a blank line.', 37 38 '<p>A paragraph preceded by a blank line.</p>' 39 ) 40 41 def test_multiline_paragraph(self): 42 self.assertMarkdownRenders( 43 self.dedent( 44 """ 45 This is a paragraph 46 on multiple lines 47 with hard returns. 48 """ 49 ), 50 self.dedent( 51 """ 52 <p>This is a paragraph 53 on multiple lines 54 with hard returns.</p> 55 """ 56 ) 57 ) 58 59 def test_paragraph_long_line(self): 60 self.assertMarkdownRenders( 61 'A very long long long long long long long long long long long long long long long long long long long ' 62 'long long long long long long long long long long long long long paragraph on 1 line.', 63 64 '<p>A very long long long long long long long long long long long long long long long long long long ' 65 'long long long long long long long long long long long long long long paragraph on 1 line.</p>' 66 ) 67 68 def test_2_paragraphs_long_line(self): 69 self.assertMarkdownRenders( 70 'A very long long long long long long long long long long long long long long long long long long long ' 71 'long long long long long long long long long long long long long paragraph on 1 line.\n\n' 72 73 'A new long long long long long long long long long long long long long long long ' 74 'long paragraph on 1 line.', 75 76 '<p>A very long long long long long long long long long long long long long long long long long long ' 77 'long long long long long long long long long long long long long long paragraph on 1 line.</p>\n' 78 '<p>A new long long long long long long long long long long long long long long long ' 79 'long paragraph on 1 line.</p>' 80 ) 81 82 def test_consecutive_paragraphs(self): 83 self.assertMarkdownRenders( 84 self.dedent( 85 """ 86 Paragraph 1. 87 88 Paragraph 2. 89 """ 90 ), 91 self.dedent( 92 """ 93 <p>Paragraph 1.</p> 94 <p>Paragraph 2.</p> 95 """ 96 ) 97 ) 98 99 def test_consecutive_paragraphs_tab(self): 100 self.assertMarkdownRenders( 101 self.dedent( 102 """ 103 Paragraph followed by a line with a tab only. 104 \t 105 Paragraph after a line with a tab only. 106 """ 107 ), 108 self.dedent( 109 """ 110 <p>Paragraph followed by a line with a tab only.</p> 111 <p>Paragraph after a line with a tab only.</p> 112 """ 113 ) 114 ) 115 116 def test_consecutive_paragraphs_space(self): 117 self.assertMarkdownRenders( 118 self.dedent( 119 """ 120 Paragraph followed by a line with a space only. 121 122 Paragraph after a line with a space only. 123 """ 124 ), 125 self.dedent( 126 """ 127 <p>Paragraph followed by a line with a space only.</p> 128 <p>Paragraph after a line with a space only.</p> 129 """ 130 ) 131 ) 132 133 def test_consecutive_multiline_paragraphs(self): 134 self.assertMarkdownRenders( 135 self.dedent( 136 """ 137 Paragraph 1, line 1. 138 Paragraph 1, line 2. 139 140 Paragraph 2, line 1. 141 Paragraph 2, line 2. 142 """ 143 ), 144 self.dedent( 145 """ 146 <p>Paragraph 1, line 1. 147 Paragraph 1, line 2.</p> 148 <p>Paragraph 2, line 1. 149 Paragraph 2, line 2.</p> 150 """ 151 ) 152 ) 153 154 def test_paragraph_leading_space(self): 155 self.assertMarkdownRenders( 156 ' A paragraph with 1 leading space.', 157 158 '<p>A paragraph with 1 leading space.</p>' 159 ) 160 161 def test_paragraph_2_leading_spaces(self): 162 self.assertMarkdownRenders( 163 ' A paragraph with 2 leading spaces.', 164 165 '<p>A paragraph with 2 leading spaces.</p>' 166 ) 167 168 def test_paragraph_3_leading_spaces(self): 169 self.assertMarkdownRenders( 170 ' A paragraph with 3 leading spaces.', 171 172 '<p>A paragraph with 3 leading spaces.</p>' 173 ) 174 175 def test_paragraph_trailing_leading_space(self): 176 self.assertMarkdownRenders( 177 ' A paragraph with 1 trailing and 1 leading space. ', 178 179 '<p>A paragraph with 1 trailing and 1 leading space. </p>' 180 ) 181 182 def test_paragraph_trailing_tab(self): 183 self.assertMarkdownRenders( 184 'A paragraph with 1 trailing tab.\t', 185 186 '<p>A paragraph with 1 trailing tab. </p>' 187 ) 188 189 def test_paragraphs_CR(self): 190 self.assertMarkdownRenders( 191 'Paragraph 1, line 1.\rParagraph 1, line 2.\r\rParagraph 2, line 1.\rParagraph 2, line 2.\r', 192 193 self.dedent( 194 """ 195 <p>Paragraph 1, line 1. 196 Paragraph 1, line 2.</p> 197 <p>Paragraph 2, line 1. 198 Paragraph 2, line 2.</p> 199 """ 200 ) 201 ) 202 203 def test_paragraphs_LF(self): 204 self.assertMarkdownRenders( 205 'Paragraph 1, line 1.\nParagraph 1, line 2.\n\nParagraph 2, line 1.\nParagraph 2, line 2.\n', 206 207 self.dedent( 208 """ 209 <p>Paragraph 1, line 1. 210 Paragraph 1, line 2.</p> 211 <p>Paragraph 2, line 1. 212 Paragraph 2, line 2.</p> 213 """ 214 ) 215 ) 216 217 def test_paragraphs_CR_LF(self): 218 self.assertMarkdownRenders( 219 'Paragraph 1, line 1.\r\nParagraph 1, line 2.\r\n\r\nParagraph 2, line 1.\r\nParagraph 2, line 2.\r\n', 220 221 self.dedent( 222 """ 223 <p>Paragraph 1, line 1. 224 Paragraph 1, line 2.</p> 225 <p>Paragraph 2, line 1. 226 Paragraph 2, line 2.</p> 227 """ 228 ) 229 ) 230