class BlockTests extends BaseTest { /** @type {Markdown} */ parser; md(markdown) { return normalizeWhitespace(this.parser.toHTML(markdown)); } setUp() { this.parser = Markdown.completeParser; } test_paragraphs() { let markdown = "Lorem ipsum\n\nDolor sit amet"; let expected = "
Lorem ipsum
Dolor sit amet
"; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_paragraph_lineGrouping() { let markdown = "Lorem ipsum\ndolor sit amet"; let expected = "Lorem ipsum dolor sit amet"; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_header_underlineH1() { let markdown = "Header 1\n===\n\nLorem ipsum"; let expected = "Lorem ipsum
"; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_header_underlineH2() { let markdown = "Header 2\n---\n\nLorem ipsum"; let expected = "Lorem ipsum
"; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_header_hash() { let markdown = "# Header 1\n## Header 2\n### Header 3\n#### Header 4\n##### Header 5\n###### Header 6\n"; let expected = 'Testing
Lorem ipsum dolor'; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_blockquote_paragraphs() { let markdown = '> Lorem ipsum dolor\n>\n>Sit amet'; let expected = '
'; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_blockquote_list() { let markdown = '> 1. Lorem\n> 2. Ipsum'; let expected = 'Lorem ipsum dolor
Sit amet
'; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_codeBlock_indented() { let markdown = "Code\n\n function foo() {\n return 'bar';\n }\n\nend"; let expected = "
- Lorem
- Ipsum
Code
\n\nfunction foo() {\n return 'bar';\n}\n\nend
"; let actual = this.parser.toHTML(markdown).trim(); // don't normalize whitespace this.assertEqual(actual.replace(/ /g, '⎵'), expected.replace(/ /g, '⎵')); } test_codeBlock_fenced() { let markdown = "Code\n\n```\nfunction foo() {\n return 'bar';\n}\n```\n\nend"; let expected = "Code
\n\nfunction foo() {\n return 'bar';\n}\n\nend
"; let actual = this.parser.toHTML(markdown).trim(); // don't normalize whitespace this.assertEqual(actual.replace(/ /g, '⎵'), expected.replace(/ /g, '⎵')); } test_codeBlock_fenced_language() { let markdown = "Code\n\n```javascript\nfunction foo() {\n return 'bar';\n}\n```\n\nend"; let expected = "Code
\n\nfunction foo() {\n return 'bar';\n}\n\nend
"; let actual = this.parser.toHTML(markdown).trim(); // don't normalize whitespace this.assertEqual(actual.replace(/ /g, '⎵'), expected.replace(/ /g, '⎵')); } test_horizontalRule() { let markdown = "Before\n\n---\n\n- - -\n\n***\n\n* * * * * * *\n\nafter"; let expected = "Before
after
"; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_table_unfenced() { let markdown = "Column A | Column B | Column C\n--- | --- | ---\n1 | 2 | 3\n4 | 5 | 6"; let expected = "| Column A | Column B | Column C |
|---|---|---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| Column A | Column B | Column C |
|---|---|---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |
| Column A | ' + 'Column B | ' + 'Column C | ' + '
|---|---|---|
| 1 | ' + '2 | ' + '3 | ' + '
| 4 | ' + '5 | ' + '6 | ' + '
| Column A | ' + '' + ' | Column C | ' + '
|---|---|---|
| 1 | ' + '2 | ' + '' + ' |
| 4 | ' + '' + ' | 6 | ' + '
| ' + ' | 8 | ' + '9 | ' + '
Lorem ipsum1 ' + 'dolor2 ' + 'sit1 amet
' + ''; let actual = this.md(markdown); this.assertEqual(actual, expected); } test_abbreviations() { let markdown = 'Lorem ipsum HTML dolor HTML sit\n' + '\n' + '*[HTML]: Hypertext Markup Language'; let expected = 'Lorem ipsum HTML dolor HTML sit
'; let actual = this.md(markdown); this.assertEqual(actual, expected); } }