aboutsummaryrefslogtreecommitdiffstats
path: root/library/parsedown/test
diff options
context:
space:
mode:
authorAndrew Manning <tamanning@zoho.com>2016-05-21 14:56:42 -0400
committerAndrew Manning <tamanning@zoho.com>2016-05-21 14:56:42 -0400
commitc6aa42773a17d53b4572488967b99666ab97ef97 (patch)
tree8ba4a4071c3a8941e7d851ad80d48cee9c3f71bd /library/parsedown/test
parent4979a451207c7072785c114a09fdd394f2a97734 (diff)
downloadvolse-hubzilla-c6aa42773a17d53b4572488967b99666ab97ef97.tar.gz
volse-hubzilla-c6aa42773a17d53b4572488967b99666ab97ef97.tar.bz2
volse-hubzilla-c6aa42773a17d53b4572488967b99666ab97ef97.zip
Trying to fix wiki branch starting fresh from dev
Diffstat (limited to 'library/parsedown/test')
-rw-r--r--library/parsedown/test/CommonMarkTest.php74
-rw-r--r--library/parsedown/test/ParsedownTest.php159
-rw-r--r--library/parsedown/test/TestParsedown.php5
-rw-r--r--library/parsedown/test/bootstrap.php3
-rw-r--r--library/parsedown/test/data/aesthetic_table.html18
-rw-r--r--library/parsedown/test/data/aesthetic_table.md4
-rw-r--r--library/parsedown/test/data/aligned_table.html21
-rw-r--r--library/parsedown/test/data/aligned_table.md4
-rw-r--r--library/parsedown/test/data/atx_heading.html9
-rw-r--r--library/parsedown/test/data/atx_heading.md17
-rw-r--r--library/parsedown/test/data/automatic_link.html1
-rw-r--r--library/parsedown/test/data/automatic_link.md1
-rw-r--r--library/parsedown/test/data/block-level_html.html12
-rw-r--r--library/parsedown/test/data/block-level_html.md16
-rw-r--r--library/parsedown/test/data/code_block.html8
-rw-r--r--library/parsedown/test/data/code_block.md10
-rw-r--r--library/parsedown/test/data/code_span.html6
-rw-r--r--library/parsedown/test/data/code_span.md11
-rw-r--r--library/parsedown/test/data/compound_blockquote.html9
-rw-r--r--library/parsedown/test/data/compound_blockquote.md10
-rw-r--r--library/parsedown/test/data/compound_emphasis.html2
-rw-r--r--library/parsedown/test/data/compound_emphasis.md4
-rw-r--r--library/parsedown/test/data/compound_list.html12
-rw-r--r--library/parsedown/test/data/compound_list.md7
-rw-r--r--library/parsedown/test/data/deeply_nested_list.html12
-rw-r--r--library/parsedown/test/data/deeply_nested_list.md6
-rw-r--r--library/parsedown/test/data/em_strong.html8
-rw-r--r--library/parsedown/test/data/em_strong.md15
-rw-r--r--library/parsedown/test/data/email.html1
-rw-r--r--library/parsedown/test/data/email.md1
-rw-r--r--library/parsedown/test/data/emphasis.html8
-rw-r--r--library/parsedown/test/data/emphasis.md13
-rw-r--r--library/parsedown/test/data/escaping.html6
-rw-r--r--library/parsedown/test/data/escaping.md11
-rw-r--r--library/parsedown/test/data/fenced_code_block.html6
-rw-r--r--library/parsedown/test/data/fenced_code_block.md14
-rw-r--r--library/parsedown/test/data/horizontal_rule.html5
-rw-r--r--library/parsedown/test/data/horizontal_rule.md9
-rw-r--r--library/parsedown/test/data/html_comment.html5
-rw-r--r--library/parsedown/test/data/html_comment.md8
-rw-r--r--library/parsedown/test/data/html_entity.html1
-rw-r--r--library/parsedown/test/data/html_entity.md1
-rw-r--r--library/parsedown/test/data/image_reference.html2
-rw-r--r--library/parsedown/test/data/image_reference.md5
-rw-r--r--library/parsedown/test/data/image_title.html2
-rw-r--r--library/parsedown/test/data/image_title.md3
-rw-r--r--library/parsedown/test/data/implicit_reference.html4
-rw-r--r--library/parsedown/test/data/implicit_reference.md13
-rw-r--r--library/parsedown/test/data/inline_link.html6
-rw-r--r--library/parsedown/test/data/inline_link.md11
-rw-r--r--library/parsedown/test/data/inline_link_title.html6
-rw-r--r--library/parsedown/test/data/inline_link_title.md11
-rw-r--r--library/parsedown/test/data/inline_title.html1
-rw-r--r--library/parsedown/test/data/inline_title.md1
-rw-r--r--library/parsedown/test/data/lazy_blockquote.html6
-rw-r--r--library/parsedown/test/data/lazy_blockquote.md5
-rw-r--r--library/parsedown/test/data/lazy_list.html4
-rw-r--r--library/parsedown/test/data/lazy_list.md2
-rw-r--r--library/parsedown/test/data/line_break.html2
-rw-r--r--library/parsedown/test/data/line_break.md2
-rw-r--r--library/parsedown/test/data/multiline_list_paragraph.html7
-rw-r--r--library/parsedown/test/data/multiline_list_paragraph.md4
-rw-r--r--library/parsedown/test/data/nested_block-level_html.html10
-rw-r--r--library/parsedown/test/data/nested_block-level_html.md11
-rw-r--r--library/parsedown/test/data/ordered_list.html13
-rw-r--r--library/parsedown/test/data/ordered_list.md11
-rw-r--r--library/parsedown/test/data/paragraph_list.html12
-rw-r--r--library/parsedown/test/data/paragraph_list.md9
-rw-r--r--library/parsedown/test/data/reference_title.html2
-rw-r--r--library/parsedown/test/data/reference_title.md6
-rw-r--r--library/parsedown/test/data/self-closing_html.html12
-rw-r--r--library/parsedown/test/data/self-closing_html.md12
-rw-r--r--library/parsedown/test/data/separated_nested_list.html9
-rw-r--r--library/parsedown/test/data/separated_nested_list.md4
-rw-r--r--library/parsedown/test/data/setext_header.html5
-rw-r--r--library/parsedown/test/data/setext_header.md12
-rw-r--r--library/parsedown/test/data/simple_blockquote.html11
-rw-r--r--library/parsedown/test/data/simple_blockquote.md7
-rw-r--r--library/parsedown/test/data/simple_table.html37
-rw-r--r--library/parsedown/test/data/simple_table.md11
-rw-r--r--library/parsedown/test/data/span-level_html.html5
-rw-r--r--library/parsedown/test/data/span-level_html.md8
-rw-r--r--library/parsedown/test/data/sparse_dense_list.html7
-rw-r--r--library/parsedown/test/data/sparse_dense_list.md4
-rw-r--r--library/parsedown/test/data/sparse_html.html8
-rw-r--r--library/parsedown/test/data/sparse_html.md8
-rw-r--r--library/parsedown/test/data/sparse_list.html15
-rw-r--r--library/parsedown/test/data/sparse_list.md9
-rw-r--r--library/parsedown/test/data/special_characters.html6
-rw-r--r--library/parsedown/test/data/special_characters.md13
-rw-r--r--library/parsedown/test/data/strikethrough.html3
-rw-r--r--library/parsedown/test/data/strikethrough.md5
-rw-r--r--library/parsedown/test/data/strong_em.html6
-rw-r--r--library/parsedown/test/data/strong_em.md11
-rw-r--r--library/parsedown/test/data/tab-indented_code_block.html6
-rw-r--r--library/parsedown/test/data/tab-indented_code_block.md6
-rw-r--r--library/parsedown/test/data/table_inline_markdown.html22
-rw-r--r--library/parsedown/test/data/table_inline_markdown.md5
-rw-r--r--library/parsedown/test/data/text_reference.html8
-rw-r--r--library/parsedown/test/data/text_reference.md21
-rw-r--r--library/parsedown/test/data/unordered_list.html10
-rw-r--r--library/parsedown/test/data/unordered_list.md8
-rw-r--r--library/parsedown/test/data/untidy_table.html18
-rw-r--r--library/parsedown/test/data/untidy_table.md4
-rw-r--r--library/parsedown/test/data/url_autolinking.html3
-rw-r--r--library/parsedown/test/data/url_autolinking.md5
-rw-r--r--library/parsedown/test/data/whitespace.html1
-rw-r--r--library/parsedown/test/data/whitespace.md5
108 files changed, 1074 insertions, 0 deletions
diff --git a/library/parsedown/test/CommonMarkTest.php b/library/parsedown/test/CommonMarkTest.php
new file mode 100644
index 000000000..9b8d11620
--- /dev/null
+++ b/library/parsedown/test/CommonMarkTest.php
@@ -0,0 +1,74 @@
+<?php
+
+/**
+ * Test Parsedown against the CommonMark spec.
+ *
+ * Some code based on the original JavaScript test runner by jgm.
+ *
+ * @link http://commonmark.org/ CommonMark
+ * @link http://git.io/8WtRvQ JavaScript test runner
+ */
+class CommonMarkTest extends PHPUnit_Framework_TestCase
+{
+ const SPEC_URL = 'https://raw.githubusercontent.com/jgm/stmd/master/spec.txt';
+
+ /**
+ * @dataProvider data
+ * @param $section
+ * @param $markdown
+ * @param $expectedHtml
+ */
+ function test_($section, $markdown, $expectedHtml)
+ {
+ $Parsedown = new Parsedown();
+ $Parsedown->setUrlsLinked(false);
+
+ $actualHtml = $Parsedown->text($markdown);
+ $actualHtml = $this->normalizeMarkup($actualHtml);
+
+ $this->assertEquals($expectedHtml, $actualHtml);
+ }
+
+ function data()
+ {
+ $spec = file_get_contents(self::SPEC_URL);
+ $spec = strstr($spec, '<!-- END TESTS -->', true);
+
+ $tests = array();
+ $currentSection = '';
+
+ preg_replace_callback(
+ '/^\.\n([\s\S]*?)^\.\n([\s\S]*?)^\.$|^#{1,6} *(.*)$/m',
+ function($matches) use ( & $tests, & $currentSection, & $testCount) {
+ if (isset($matches[3]) and $matches[3]) {
+ $currentSection = $matches[3];
+ } else {
+ $testCount++;
+ $markdown = $matches[1];
+ $markdown = preg_replace('/→/', "\t", $markdown);
+ $expectedHtml = $matches[2];
+ $expectedHtml = $this->normalizeMarkup($expectedHtml);
+ $tests []= array(
+ $currentSection, # section
+ $markdown, # markdown
+ $expectedHtml, # html
+ );
+ }
+ },
+ $spec
+ );
+
+ return $tests;
+ }
+
+ private function normalizeMarkup($markup)
+ {
+ $markup = preg_replace("/\n+/", "\n", $markup);
+ $markup = preg_replace('/^\s+/m', '', $markup);
+ $markup = preg_replace('/^((?:<[\w]+>)+)\n/m', '$1', $markup);
+ $markup = preg_replace('/\n((?:<\/[\w]+>)+)$/m', '$1', $markup);
+ $markup = trim($markup);
+
+ return $markup;
+ }
+}
diff --git a/library/parsedown/test/ParsedownTest.php b/library/parsedown/test/ParsedownTest.php
new file mode 100644
index 000000000..c922ab1f2
--- /dev/null
+++ b/library/parsedown/test/ParsedownTest.php
@@ -0,0 +1,159 @@
+<?php
+
+class ParsedownTest extends PHPUnit_Framework_TestCase
+{
+ final function __construct($name = null, array $data = array(), $dataName = '')
+ {
+ $this->dirs = $this->initDirs();
+ $this->Parsedown = $this->initParsedown();
+
+ parent::__construct($name, $data, $dataName);
+ }
+
+ private $dirs, $Parsedown;
+
+ /**
+ * @return array
+ */
+ protected function initDirs()
+ {
+ $dirs []= dirname(__FILE__).'/data/';
+
+ return $dirs;
+ }
+
+ /**
+ * @return Parsedown
+ */
+ protected function initParsedown()
+ {
+ $Parsedown = new Parsedown();
+
+ return $Parsedown;
+ }
+
+ /**
+ * @dataProvider data
+ * @param $test
+ * @param $dir
+ */
+ function test_($test, $dir)
+ {
+ $markdown = file_get_contents($dir . $test . '.md');
+
+ $expectedMarkup = file_get_contents($dir . $test . '.html');
+
+ $expectedMarkup = str_replace("\r\n", "\n", $expectedMarkup);
+ $expectedMarkup = str_replace("\r", "\n", $expectedMarkup);
+
+ $actualMarkup = $this->Parsedown->text($markdown);
+
+ $this->assertEquals($expectedMarkup, $actualMarkup);
+ }
+
+ function data()
+ {
+ $data = array();
+
+ foreach ($this->dirs as $dir)
+ {
+ $Folder = new DirectoryIterator($dir);
+
+ foreach ($Folder as $File)
+ {
+ /** @var $File DirectoryIterator */
+
+ if ( ! $File->isFile())
+ {
+ continue;
+ }
+
+ $filename = $File->getFilename();
+
+ $extension = pathinfo($filename, PATHINFO_EXTENSION);
+
+ if ($extension !== 'md')
+ {
+ continue;
+ }
+
+ $basename = $File->getBasename('.md');
+
+ if (file_exists($dir . $basename . '.html'))
+ {
+ $data []= array($basename, $dir);
+ }
+ }
+ }
+
+ return $data;
+ }
+
+ public function test_no_markup()
+ {
+ $markdownWithHtml = <<<MARKDOWN_WITH_MARKUP
+<div>_content_</div>
+
+sparse:
+
+<div>
+<div class="inner">
+_content_
+</div>
+</div>
+
+paragraph
+
+<style type="text/css">
+ p {
+ color: red;
+ }
+</style>
+
+comment
+
+<!-- html comment -->
+MARKDOWN_WITH_MARKUP;
+
+ $expectedHtml = <<<EXPECTED_HTML
+<p>&lt;div&gt;<em>content</em>&lt;/div&gt;</p>
+<p>sparse:</p>
+<p>&lt;div&gt;
+&lt;div class=&quot;inner&quot;&gt;
+<em>content</em>
+&lt;/div&gt;
+&lt;/div&gt;</p>
+<p>paragraph</p>
+<p>&lt;style type=&quot;text/css&quot;&gt;
+p {
+color: red;
+}
+&lt;/style&gt;</p>
+<p>comment</p>
+<p>&lt;!-- html comment --&gt;</p>
+EXPECTED_HTML;
+ $parsedownWithNoMarkup = new Parsedown();
+ $parsedownWithNoMarkup->setMarkupEscaped(true);
+ $this->assertEquals($expectedHtml, $parsedownWithNoMarkup->text($markdownWithHtml));
+ }
+
+ public function testLateStaticBinding()
+ {
+ include 'test/TestParsedown.php';
+
+ $parsedown = Parsedown::instance();
+ $this->assertInstanceOf('Parsedown', $parsedown);
+
+ // After instance is already called on Parsedown
+ // subsequent calls with the same arguments return the same instance
+ $sameParsedown = TestParsedown::instance();
+ $this->assertInstanceOf('Parsedown', $sameParsedown);
+ $this->assertSame($parsedown, $sameParsedown);
+
+ $testParsedown = TestParsedown::instance('test late static binding');
+ $this->assertInstanceOf('TestParsedown', $testParsedown);
+
+ $sameInstanceAgain = TestParsedown::instance('test late static binding');
+ $this->assertSame($testParsedown, $sameInstanceAgain);
+ }
+}
diff --git a/library/parsedown/test/TestParsedown.php b/library/parsedown/test/TestParsedown.php
new file mode 100644
index 000000000..7024dfbcc
--- /dev/null
+++ b/library/parsedown/test/TestParsedown.php
@@ -0,0 +1,5 @@
+<?php
+
+class TestParsedown extends Parsedown
+{
+}
diff --git a/library/parsedown/test/bootstrap.php b/library/parsedown/test/bootstrap.php
new file mode 100644
index 000000000..5f264d2f2
--- /dev/null
+++ b/library/parsedown/test/bootstrap.php
@@ -0,0 +1,3 @@
+<?php
+
+include 'Parsedown.php'; \ No newline at end of file
diff --git a/library/parsedown/test/data/aesthetic_table.html b/library/parsedown/test/data/aesthetic_table.html
new file mode 100644
index 000000000..88e1c2bd4
--- /dev/null
+++ b/library/parsedown/test/data/aesthetic_table.html
@@ -0,0 +1,18 @@
+<table>
+<thead>
+<tr>
+<th>header 1</th>
+<th>header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>cell 1.1</td>
+<td>cell 1.2</td>
+</tr>
+<tr>
+<td>cell 2.1</td>
+<td>cell 2.2</td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/library/parsedown/test/data/aesthetic_table.md b/library/parsedown/test/data/aesthetic_table.md
new file mode 100644
index 000000000..5245e6c9d
--- /dev/null
+++ b/library/parsedown/test/data/aesthetic_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 |
+| -------- | -------- |
+| cell 1.1 | cell 1.2 |
+| cell 2.1 | cell 2.2 | \ No newline at end of file
diff --git a/library/parsedown/test/data/aligned_table.html b/library/parsedown/test/data/aligned_table.html
new file mode 100644
index 000000000..c4acfcb68
--- /dev/null
+++ b/library/parsedown/test/data/aligned_table.html
@@ -0,0 +1,21 @@
+<table>
+<thead>
+<tr>
+<th style="text-align: left;">header 1</th>
+<th style="text-align: center;">header 2</th>
+<th style="text-align: right;">header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align: left;">cell 1.1</td>
+<td style="text-align: center;">cell 1.2</td>
+<td style="text-align: right;">cell 1.3</td>
+</tr>
+<tr>
+<td style="text-align: left;">cell 2.1</td>
+<td style="text-align: center;">cell 2.2</td>
+<td style="text-align: right;">cell 2.3</td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/library/parsedown/test/data/aligned_table.md b/library/parsedown/test/data/aligned_table.md
new file mode 100644
index 000000000..69a45f90f
--- /dev/null
+++ b/library/parsedown/test/data/aligned_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 | header 2 |
+| :------- | :------: | -------: |
+| cell 1.1 | cell 1.2 | cell 1.3 |
+| cell 2.1 | cell 2.2 | cell 2.3 | \ No newline at end of file
diff --git a/library/parsedown/test/data/atx_heading.html b/library/parsedown/test/data/atx_heading.html
new file mode 100644
index 000000000..751f8739f
--- /dev/null
+++ b/library/parsedown/test/data/atx_heading.html
@@ -0,0 +1,9 @@
+<h1>h1</h1>
+<h2>h2</h2>
+<h3>h3</h3>
+<h4>h4</h4>
+<h5>h5</h5>
+<h6>h6</h6>
+<p>####### not a heading</p>
+<h1>closed h1</h1>
+<p>#</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/atx_heading.md b/library/parsedown/test/data/atx_heading.md
new file mode 100644
index 000000000..ad97b44ca
--- /dev/null
+++ b/library/parsedown/test/data/atx_heading.md
@@ -0,0 +1,17 @@
+# h1
+
+## h2
+
+### h3
+
+#### h4
+
+##### h5
+
+###### h6
+
+####### not a heading
+
+# closed h1 #
+
+# \ No newline at end of file
diff --git a/library/parsedown/test/data/automatic_link.html b/library/parsedown/test/data/automatic_link.html
new file mode 100644
index 000000000..50a94ba0f
--- /dev/null
+++ b/library/parsedown/test/data/automatic_link.html
@@ -0,0 +1 @@
+<p><a href="http://example.com">http://example.com</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/automatic_link.md b/library/parsedown/test/data/automatic_link.md
new file mode 100644
index 000000000..08d3bf46a
--- /dev/null
+++ b/library/parsedown/test/data/automatic_link.md
@@ -0,0 +1 @@
+<http://example.com> \ No newline at end of file
diff --git a/library/parsedown/test/data/block-level_html.html b/library/parsedown/test/data/block-level_html.html
new file mode 100644
index 000000000..6443a4a6a
--- /dev/null
+++ b/library/parsedown/test/data/block-level_html.html
@@ -0,0 +1,12 @@
+<div>_content_</div>
+<p>paragraph</p>
+<div>
+ <div class="inner">
+ _content_
+ </div>
+</div>
+<style type="text/css">
+ p {color: #789;}
+</style>
+<div>
+ <a href="/">home</a></div> \ No newline at end of file
diff --git a/library/parsedown/test/data/block-level_html.md b/library/parsedown/test/data/block-level_html.md
new file mode 100644
index 000000000..17cbc22d3
--- /dev/null
+++ b/library/parsedown/test/data/block-level_html.md
@@ -0,0 +1,16 @@
+<div>_content_</div>
+
+paragraph
+
+<div>
+ <div class="inner">
+ _content_
+ </div>
+</div>
+
+<style type="text/css">
+ p {color: #789;}
+</style>
+
+<div>
+ <a href="/">home</a></div> \ No newline at end of file
diff --git a/library/parsedown/test/data/code_block.html b/library/parsedown/test/data/code_block.html
new file mode 100644
index 000000000..889b02d99
--- /dev/null
+++ b/library/parsedown/test/data/code_block.html
@@ -0,0 +1,8 @@
+<pre><code>&lt;?php
+
+$message = 'Hello World!';
+echo $message;</code></pre>
+<hr />
+<pre><code>&gt; not a quote
+- not a list item
+[not a reference]: http://foo.com</code></pre> \ No newline at end of file
diff --git a/library/parsedown/test/data/code_block.md b/library/parsedown/test/data/code_block.md
new file mode 100644
index 000000000..2cfc953cc
--- /dev/null
+++ b/library/parsedown/test/data/code_block.md
@@ -0,0 +1,10 @@
+ <?php
+
+ $message = 'Hello World!';
+ echo $message;
+
+---
+
+ > not a quote
+ - not a list item
+ [not a reference]: http://foo.com \ No newline at end of file
diff --git a/library/parsedown/test/data/code_span.html b/library/parsedown/test/data/code_span.html
new file mode 100644
index 000000000..5c4c231e3
--- /dev/null
+++ b/library/parsedown/test/data/code_span.html
@@ -0,0 +1,6 @@
+<p>a <code>code span</code></p>
+<p><code>this is also a codespan</code> trailing text</p>
+<p><code>and look at this one!</code></p>
+<p>single backtick in a code span: <code>`</code></p>
+<p>backtick-delimited string in a code span: <code>`foo`</code></p>
+<p><code>sth `` sth</code></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/code_span.md b/library/parsedown/test/data/code_span.md
new file mode 100644
index 000000000..c2f1a7442
--- /dev/null
+++ b/library/parsedown/test/data/code_span.md
@@ -0,0 +1,11 @@
+a `code span`
+
+`this is also a codespan` trailing text
+
+`and look at this one!`
+
+single backtick in a code span: `` ` ``
+
+backtick-delimited string in a code span: `` `foo` ``
+
+`sth `` sth` \ No newline at end of file
diff --git a/library/parsedown/test/data/compound_blockquote.html b/library/parsedown/test/data/compound_blockquote.html
new file mode 100644
index 000000000..37afb57a4
--- /dev/null
+++ b/library/parsedown/test/data/compound_blockquote.html
@@ -0,0 +1,9 @@
+<blockquote>
+<h2>header</h2>
+<p>paragraph</p>
+<ul>
+<li>li</li>
+</ul>
+<hr />
+<p>paragraph</p>
+</blockquote> \ No newline at end of file
diff --git a/library/parsedown/test/data/compound_blockquote.md b/library/parsedown/test/data/compound_blockquote.md
new file mode 100644
index 000000000..80c4aed16
--- /dev/null
+++ b/library/parsedown/test/data/compound_blockquote.md
@@ -0,0 +1,10 @@
+> header
+> ------
+>
+> paragraph
+>
+> - li
+>
+> ---
+>
+> paragraph \ No newline at end of file
diff --git a/library/parsedown/test/data/compound_emphasis.html b/library/parsedown/test/data/compound_emphasis.html
new file mode 100644
index 000000000..178dd54ba
--- /dev/null
+++ b/library/parsedown/test/data/compound_emphasis.html
@@ -0,0 +1,2 @@
+<p><em><code>code</code></em> <strong><code>code</code></strong></p>
+<p><em><code>code</code><strong><code>code</code></strong><code>code</code></em></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/compound_emphasis.md b/library/parsedown/test/data/compound_emphasis.md
new file mode 100644
index 000000000..6fe07f260
--- /dev/null
+++ b/library/parsedown/test/data/compound_emphasis.md
@@ -0,0 +1,4 @@
+_`code`_ __`code`__
+
+*`code`**`code`**`code`*
+
diff --git a/library/parsedown/test/data/compound_list.html b/library/parsedown/test/data/compound_list.html
new file mode 100644
index 000000000..f5593c142
--- /dev/null
+++ b/library/parsedown/test/data/compound_list.html
@@ -0,0 +1,12 @@
+<ul>
+<li>
+<p>paragraph</p>
+<p>paragraph</p>
+</li>
+<li>
+<p>paragraph</p>
+<blockquote>
+<p>quote</p>
+</blockquote>
+</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/compound_list.md b/library/parsedown/test/data/compound_list.md
new file mode 100644
index 000000000..ed7f0c60f
--- /dev/null
+++ b/library/parsedown/test/data/compound_list.md
@@ -0,0 +1,7 @@
+- paragraph
+
+ paragraph
+
+- paragraph
+
+ > quote \ No newline at end of file
diff --git a/library/parsedown/test/data/deeply_nested_list.html b/library/parsedown/test/data/deeply_nested_list.html
new file mode 100644
index 000000000..d2c7e5acc
--- /dev/null
+++ b/library/parsedown/test/data/deeply_nested_list.html
@@ -0,0 +1,12 @@
+<ul>
+<li>li
+<ul>
+<li>li
+<ul>
+<li>li</li>
+<li>li</li>
+</ul></li>
+<li>li</li>
+</ul></li>
+<li>li</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/deeply_nested_list.md b/library/parsedown/test/data/deeply_nested_list.md
new file mode 100644
index 000000000..76b7552d8
--- /dev/null
+++ b/library/parsedown/test/data/deeply_nested_list.md
@@ -0,0 +1,6 @@
+- li
+ - li
+ - li
+ - li
+ - li
+- li \ No newline at end of file
diff --git a/library/parsedown/test/data/em_strong.html b/library/parsedown/test/data/em_strong.html
new file mode 100644
index 000000000..323d60aec
--- /dev/null
+++ b/library/parsedown/test/data/em_strong.html
@@ -0,0 +1,8 @@
+<p><strong><em>em strong</em></strong></p>
+<p><strong><em>em strong</em> strong</strong></p>
+<p><strong>strong <em>em strong</em></strong></p>
+<p><strong>strong <em>em strong</em> strong</strong></p>
+<p><strong><em>em strong</em></strong></p>
+<p><strong><em>em strong</em> strong</strong></p>
+<p><strong>strong <em>em strong</em></strong></p>
+<p><strong>strong <em>em strong</em> strong</strong></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/em_strong.md b/library/parsedown/test/data/em_strong.md
new file mode 100644
index 000000000..9abeb3fd4
--- /dev/null
+++ b/library/parsedown/test/data/em_strong.md
@@ -0,0 +1,15 @@
+___em strong___
+
+___em strong_ strong__
+
+__strong _em strong___
+
+__strong _em strong_ strong__
+
+***em strong***
+
+***em strong* strong**
+
+**strong *em strong***
+
+**strong *em strong* strong** \ No newline at end of file
diff --git a/library/parsedown/test/data/email.html b/library/parsedown/test/data/email.html
new file mode 100644
index 000000000..c40759c96
--- /dev/null
+++ b/library/parsedown/test/data/email.html
@@ -0,0 +1 @@
+<p>my email is <a href="mailto:me@example.com">me@example.com</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/email.md b/library/parsedown/test/data/email.md
new file mode 100644
index 000000000..26b7b6cc5
--- /dev/null
+++ b/library/parsedown/test/data/email.md
@@ -0,0 +1 @@
+my email is <me@example.com> \ No newline at end of file
diff --git a/library/parsedown/test/data/emphasis.html b/library/parsedown/test/data/emphasis.html
new file mode 100644
index 000000000..60ff4bd8b
--- /dev/null
+++ b/library/parsedown/test/data/emphasis.html
@@ -0,0 +1,8 @@
+<p><em>underscore</em>, <em>asterisk</em>, <em>one two</em>, <em>three four</em>, <em>a</em>, <em>b</em></p>
+<p><strong>strong</strong> and <em>em</em> and <strong>strong</strong> and <em>em</em></p>
+<p><em>line
+line
+line</em></p>
+<p>this_is_not_an_emphasis</p>
+<p>an empty emphasis __ ** is not an emphasis</p>
+<p>*mixed *<em>double and</em> single asterisk** spans</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/emphasis.md b/library/parsedown/test/data/emphasis.md
new file mode 100644
index 000000000..85b9d2299
--- /dev/null
+++ b/library/parsedown/test/data/emphasis.md
@@ -0,0 +1,13 @@
+_underscore_, *asterisk*, _one two_, *three four*, _a_, *b*
+
+**strong** and *em* and **strong** and *em*
+
+_line
+line
+line_
+
+this_is_not_an_emphasis
+
+an empty emphasis __ ** is not an emphasis
+
+*mixed **double and* single asterisk** spans \ No newline at end of file
diff --git a/library/parsedown/test/data/escaping.html b/library/parsedown/test/data/escaping.html
new file mode 100644
index 000000000..ab1c41fdc
--- /dev/null
+++ b/library/parsedown/test/data/escaping.html
@@ -0,0 +1,6 @@
+<p>escaped *emphasis*.</p>
+<p><code>escaped \*emphasis\* in a code span</code></p>
+<pre><code>escaped \*emphasis\* in a code block</code></pre>
+<p>\ ` * _ { } [ ] ( ) > # + - . !</p>
+<p><em>one_two</em> <strong>one_two</strong></p>
+<p><em>one*two</em> <strong>one*two</strong></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/escaping.md b/library/parsedown/test/data/escaping.md
new file mode 100644
index 000000000..9f174e98c
--- /dev/null
+++ b/library/parsedown/test/data/escaping.md
@@ -0,0 +1,11 @@
+escaped \*emphasis\*.
+
+`escaped \*emphasis\* in a code span`
+
+ escaped \*emphasis\* in a code block
+
+\\ \` \* \_ \{ \} \[ \] \( \) \> \# \+ \- \. \!
+
+_one\_two_ __one\_two__
+
+*one\*two* **one\*two** \ No newline at end of file
diff --git a/library/parsedown/test/data/fenced_code_block.html b/library/parsedown/test/data/fenced_code_block.html
new file mode 100644
index 000000000..8bdabba96
--- /dev/null
+++ b/library/parsedown/test/data/fenced_code_block.html
@@ -0,0 +1,6 @@
+<pre><code>&lt;?php
+
+$message = 'fenced code block';
+echo $message;</code></pre>
+<pre><code>tilde</code></pre>
+<pre><code class="language-php">echo 'language identifier';</code></pre> \ No newline at end of file
diff --git a/library/parsedown/test/data/fenced_code_block.md b/library/parsedown/test/data/fenced_code_block.md
new file mode 100644
index 000000000..cbed8ebb5
--- /dev/null
+++ b/library/parsedown/test/data/fenced_code_block.md
@@ -0,0 +1,14 @@
+```
+<?php
+
+$message = 'fenced code block';
+echo $message;
+```
+
+~~~
+tilde
+~~~
+
+```php
+echo 'language identifier';
+``` \ No newline at end of file
diff --git a/library/parsedown/test/data/horizontal_rule.html b/library/parsedown/test/data/horizontal_rule.html
new file mode 100644
index 000000000..68da03d06
--- /dev/null
+++ b/library/parsedown/test/data/horizontal_rule.html
@@ -0,0 +1,5 @@
+<hr />
+<hr />
+<hr />
+<hr />
+<hr /> \ No newline at end of file
diff --git a/library/parsedown/test/data/horizontal_rule.md b/library/parsedown/test/data/horizontal_rule.md
new file mode 100644
index 000000000..bf461a925
--- /dev/null
+++ b/library/parsedown/test/data/horizontal_rule.md
@@ -0,0 +1,9 @@
+---
+
+- - -
+
+ - - -
+
+***
+
+___ \ No newline at end of file
diff --git a/library/parsedown/test/data/html_comment.html b/library/parsedown/test/data/html_comment.html
new file mode 100644
index 000000000..566dc3add
--- /dev/null
+++ b/library/parsedown/test/data/html_comment.html
@@ -0,0 +1,5 @@
+<!-- single line -->
+<p>paragraph</p>
+<!--
+ multiline -->
+<p>paragraph</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/html_comment.md b/library/parsedown/test/data/html_comment.md
new file mode 100644
index 000000000..6ddfdb441
--- /dev/null
+++ b/library/parsedown/test/data/html_comment.md
@@ -0,0 +1,8 @@
+<!-- single line -->
+
+paragraph
+
+<!--
+ multiline -->
+
+paragraph \ No newline at end of file
diff --git a/library/parsedown/test/data/html_entity.html b/library/parsedown/test/data/html_entity.html
new file mode 100644
index 000000000..4d23e3cd4
--- /dev/null
+++ b/library/parsedown/test/data/html_entity.html
@@ -0,0 +1 @@
+<p>&amp; &copy; &#123;</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/html_entity.md b/library/parsedown/test/data/html_entity.md
new file mode 100644
index 000000000..ff545ea5c
--- /dev/null
+++ b/library/parsedown/test/data/html_entity.md
@@ -0,0 +1 @@
+&amp; &copy; &#123; \ No newline at end of file
diff --git a/library/parsedown/test/data/image_reference.html b/library/parsedown/test/data/image_reference.html
new file mode 100644
index 000000000..67fbd2c86
--- /dev/null
+++ b/library/parsedown/test/data/image_reference.html
@@ -0,0 +1,2 @@
+<p><img src="/md.png" alt="Markdown Logo" /></p>
+<p>![missing reference]</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/image_reference.md b/library/parsedown/test/data/image_reference.md
new file mode 100644
index 000000000..1e11d9479
--- /dev/null
+++ b/library/parsedown/test/data/image_reference.md
@@ -0,0 +1,5 @@
+![Markdown Logo][image]
+
+[image]: /md.png
+
+![missing reference] \ No newline at end of file
diff --git a/library/parsedown/test/data/image_title.html b/library/parsedown/test/data/image_title.html
new file mode 100644
index 000000000..957c9505c
--- /dev/null
+++ b/library/parsedown/test/data/image_title.html
@@ -0,0 +1,2 @@
+<p><img src="/md.png" alt="alt" title="title" /></p>
+<p><img src="/md.png" alt="blank title" title="" /></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/image_title.md b/library/parsedown/test/data/image_title.md
new file mode 100644
index 000000000..7ce2849a5
--- /dev/null
+++ b/library/parsedown/test/data/image_title.md
@@ -0,0 +1,3 @@
+![alt](/md.png "title")
+
+![blank title](/md.png "") \ No newline at end of file
diff --git a/library/parsedown/test/data/implicit_reference.html b/library/parsedown/test/data/implicit_reference.html
new file mode 100644
index 000000000..24b51c1b0
--- /dev/null
+++ b/library/parsedown/test/data/implicit_reference.html
@@ -0,0 +1,4 @@
+<p>an <a href="http://example.com">implicit</a> reference link</p>
+<p>an <a href="http://example.com">implicit</a> reference link with an empty link definition</p>
+<p>an <a href="http://example.com">implicit</a> reference link followed by <a href="http://cnn.com">another</a></p>
+<p>an <a href="http://example.com" title="Example">explicit</a> reference link with a title</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/implicit_reference.md b/library/parsedown/test/data/implicit_reference.md
new file mode 100644
index 000000000..f850df964
--- /dev/null
+++ b/library/parsedown/test/data/implicit_reference.md
@@ -0,0 +1,13 @@
+an [implicit] reference link
+
+[implicit]: http://example.com
+
+an [implicit][] reference link with an empty link definition
+
+an [implicit][] reference link followed by [another][]
+
+[another]: http://cnn.com
+
+an [explicit][example] reference link with a title
+
+[example]: http://example.com "Example" \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_link.html b/library/parsedown/test/data/inline_link.html
new file mode 100644
index 000000000..5ad564aa3
--- /dev/null
+++ b/library/parsedown/test/data/inline_link.html
@@ -0,0 +1,6 @@
+<p><a href="http://example.com">link</a></p>
+<p><a href="/url-(parentheses)">link</a> with parentheses in URL </p>
+<p>(<a href="/index.php">link</a>) in parentheses</p>
+<p><a href="http://example.com"><code>link</code></a></p>
+<p><a href="http://example.com"><img src="http://parsedown.org/md.png" alt="MD Logo" /></a></p>
+<p><a href="http://example.com"><img src="http://parsedown.org/md.png" alt="MD Logo" /> and text</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_link.md b/library/parsedown/test/data/inline_link.md
new file mode 100644
index 000000000..6bac0b35e
--- /dev/null
+++ b/library/parsedown/test/data/inline_link.md
@@ -0,0 +1,11 @@
+[link](http://example.com)
+
+[link](/url-(parentheses)) with parentheses in URL
+
+([link](/index.php)) in parentheses
+
+[`link`](http://example.com)
+
+[![MD Logo](http://parsedown.org/md.png)](http://example.com)
+
+[![MD Logo](http://parsedown.org/md.png) and text](http://example.com) \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_link_title.html b/library/parsedown/test/data/inline_link_title.html
new file mode 100644
index 000000000..ecdfd03da
--- /dev/null
+++ b/library/parsedown/test/data/inline_link_title.html
@@ -0,0 +1,6 @@
+<p><a href="http://example.com" title="Title">single quotes</a></p>
+<p><a href="http://example.com" title="Title">double quotes</a></p>
+<p><a href="http://example.com" title="">single quotes blank</a></p>
+<p><a href="http://example.com" title="">double quotes blank</a></p>
+<p><a href="http://example.com" title="2 Words">space</a></p>
+<p><a href="http://example.com/url-(parentheses)" title="Title">parentheses</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_link_title.md b/library/parsedown/test/data/inline_link_title.md
new file mode 100644
index 000000000..6e1c5af9b
--- /dev/null
+++ b/library/parsedown/test/data/inline_link_title.md
@@ -0,0 +1,11 @@
+[single quotes](http://example.com 'Title')
+
+[double quotes](http://example.com "Title")
+
+[single quotes blank](http://example.com '')
+
+[double quotes blank](http://example.com "")
+
+[space](http://example.com "2 Words")
+
+[parentheses](http://example.com/url-(parentheses) "Title") \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_title.html b/library/parsedown/test/data/inline_title.html
new file mode 100644
index 000000000..bbab93b6c
--- /dev/null
+++ b/library/parsedown/test/data/inline_title.html
@@ -0,0 +1 @@
+<p><a href="http://example.com" title="Example">single quotes</a> and <a href="http://example.com" title="Example">double quotes</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/inline_title.md b/library/parsedown/test/data/inline_title.md
new file mode 100644
index 000000000..cb09344a1
--- /dev/null
+++ b/library/parsedown/test/data/inline_title.md
@@ -0,0 +1 @@
+[single quotes](http://example.com 'Example') and [double quotes](http://example.com "Example") \ No newline at end of file
diff --git a/library/parsedown/test/data/lazy_blockquote.html b/library/parsedown/test/data/lazy_blockquote.html
new file mode 100644
index 000000000..0a2a2aaf9
--- /dev/null
+++ b/library/parsedown/test/data/lazy_blockquote.html
@@ -0,0 +1,6 @@
+<blockquote>
+<p>quote
+the rest of it</p>
+<p>another paragraph
+the rest of it</p>
+</blockquote> \ No newline at end of file
diff --git a/library/parsedown/test/data/lazy_blockquote.md b/library/parsedown/test/data/lazy_blockquote.md
new file mode 100644
index 000000000..48f645f94
--- /dev/null
+++ b/library/parsedown/test/data/lazy_blockquote.md
@@ -0,0 +1,5 @@
+> quote
+the rest of it
+
+> another paragraph
+the rest of it \ No newline at end of file
diff --git a/library/parsedown/test/data/lazy_list.html b/library/parsedown/test/data/lazy_list.html
new file mode 100644
index 000000000..1a5199249
--- /dev/null
+++ b/library/parsedown/test/data/lazy_list.html
@@ -0,0 +1,4 @@
+<ul>
+<li>li
+the rest of it</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/lazy_list.md b/library/parsedown/test/data/lazy_list.md
new file mode 100644
index 000000000..62ad9d719
--- /dev/null
+++ b/library/parsedown/test/data/lazy_list.md
@@ -0,0 +1,2 @@
+- li
+the rest of it \ No newline at end of file
diff --git a/library/parsedown/test/data/line_break.html b/library/parsedown/test/data/line_break.html
new file mode 100644
index 000000000..5f37d854c
--- /dev/null
+++ b/library/parsedown/test/data/line_break.html
@@ -0,0 +1,2 @@
+<p>line<br />
+line</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/line_break.md b/library/parsedown/test/data/line_break.md
new file mode 100644
index 000000000..04dff43e0
--- /dev/null
+++ b/library/parsedown/test/data/line_break.md
@@ -0,0 +1,2 @@
+line
+line \ No newline at end of file
diff --git a/library/parsedown/test/data/multiline_list_paragraph.html b/library/parsedown/test/data/multiline_list_paragraph.html
new file mode 100644
index 000000000..3247bd227
--- /dev/null
+++ b/library/parsedown/test/data/multiline_list_paragraph.html
@@ -0,0 +1,7 @@
+<ul>
+<li>
+<p>li</p>
+<p>line
+line</p>
+</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/multiline_list_paragraph.md b/library/parsedown/test/data/multiline_list_paragraph.md
new file mode 100644
index 000000000..f5b42729f
--- /dev/null
+++ b/library/parsedown/test/data/multiline_list_paragraph.md
@@ -0,0 +1,4 @@
+- li
+
+ line
+ line \ No newline at end of file
diff --git a/library/parsedown/test/data/nested_block-level_html.html b/library/parsedown/test/data/nested_block-level_html.html
new file mode 100644
index 000000000..bfbef54d7
--- /dev/null
+++ b/library/parsedown/test/data/nested_block-level_html.html
@@ -0,0 +1,10 @@
+<div>
+_parent_
+<div>
+_child_
+</div>
+<pre>
+_adopted child_
+</pre>
+</div>
+<p><em>outside</em></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/nested_block-level_html.md b/library/parsedown/test/data/nested_block-level_html.md
new file mode 100644
index 000000000..5e01e1097
--- /dev/null
+++ b/library/parsedown/test/data/nested_block-level_html.md
@@ -0,0 +1,11 @@
+<div>
+_parent_
+<div>
+_child_
+</div>
+<pre>
+_adopted child_
+</pre>
+</div>
+
+_outside_ \ No newline at end of file
diff --git a/library/parsedown/test/data/ordered_list.html b/library/parsedown/test/data/ordered_list.html
new file mode 100644
index 000000000..b6c5216ca
--- /dev/null
+++ b/library/parsedown/test/data/ordered_list.html
@@ -0,0 +1,13 @@
+<ol>
+<li>one</li>
+<li>two</li>
+</ol>
+<p>repeating numbers:</p>
+<ol>
+<li>one</li>
+<li>two</li>
+</ol>
+<p>large numbers:</p>
+<ol>
+<li>one</li>
+</ol> \ No newline at end of file
diff --git a/library/parsedown/test/data/ordered_list.md b/library/parsedown/test/data/ordered_list.md
new file mode 100644
index 000000000..b307032cf
--- /dev/null
+++ b/library/parsedown/test/data/ordered_list.md
@@ -0,0 +1,11 @@
+1. one
+2. two
+
+repeating numbers:
+
+1. one
+1. two
+
+large numbers:
+
+123. one \ No newline at end of file
diff --git a/library/parsedown/test/data/paragraph_list.html b/library/parsedown/test/data/paragraph_list.html
new file mode 100644
index 000000000..ced1c43ee
--- /dev/null
+++ b/library/parsedown/test/data/paragraph_list.html
@@ -0,0 +1,12 @@
+<p>paragraph</p>
+<ul>
+<li>li</li>
+<li>li</li>
+</ul>
+<p>paragraph</p>
+<ul>
+<li>
+<p>li</p>
+</li>
+<li>li</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/paragraph_list.md b/library/parsedown/test/data/paragraph_list.md
new file mode 100644
index 000000000..b973908ce
--- /dev/null
+++ b/library/parsedown/test/data/paragraph_list.md
@@ -0,0 +1,9 @@
+paragraph
+- li
+- li
+
+paragraph
+
+ * li
+
+ * li \ No newline at end of file
diff --git a/library/parsedown/test/data/reference_title.html b/library/parsedown/test/data/reference_title.html
new file mode 100644
index 000000000..8f2be944c
--- /dev/null
+++ b/library/parsedown/test/data/reference_title.html
@@ -0,0 +1,2 @@
+<p><a href="http://example.com" title="example title">double quotes</a> and <a href="http://example.com" title="example title">single quotes</a> and <a href="http://example.com" title="example title">parentheses</a></p>
+<p>[invalid title]: <a href="http://example.com">http://example.com</a> example title</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/reference_title.md b/library/parsedown/test/data/reference_title.md
new file mode 100644
index 000000000..43cb21708
--- /dev/null
+++ b/library/parsedown/test/data/reference_title.md
@@ -0,0 +1,6 @@
+[double quotes] and [single quotes] and [parentheses]
+
+[double quotes]: http://example.com "example title"
+[single quotes]: http://example.com 'example title'
+[parentheses]: http://example.com (example title)
+[invalid title]: http://example.com example title \ No newline at end of file
diff --git a/library/parsedown/test/data/self-closing_html.html b/library/parsedown/test/data/self-closing_html.html
new file mode 100644
index 000000000..4d072b43f
--- /dev/null
+++ b/library/parsedown/test/data/self-closing_html.html
@@ -0,0 +1,12 @@
+<hr>
+<p>paragraph</p>
+<hr/>
+<p>paragraph</p>
+<hr />
+<p>paragraph</p>
+<hr class="foo" id="bar" />
+<p>paragraph</p>
+<hr class="foo" id="bar"/>
+<p>paragraph</p>
+<hr class="foo" id="bar" >
+<p>paragraph</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/self-closing_html.md b/library/parsedown/test/data/self-closing_html.md
new file mode 100644
index 000000000..acb20327d
--- /dev/null
+++ b/library/parsedown/test/data/self-closing_html.md
@@ -0,0 +1,12 @@
+<hr>
+paragraph
+<hr/>
+paragraph
+<hr />
+paragraph
+<hr class="foo" id="bar" />
+paragraph
+<hr class="foo" id="bar"/>
+paragraph
+<hr class="foo" id="bar" >
+paragraph \ No newline at end of file
diff --git a/library/parsedown/test/data/separated_nested_list.html b/library/parsedown/test/data/separated_nested_list.html
new file mode 100644
index 000000000..80a5cae26
--- /dev/null
+++ b/library/parsedown/test/data/separated_nested_list.html
@@ -0,0 +1,9 @@
+<ul>
+<li>
+<p>li</p>
+<ul>
+<li>li</li>
+<li>li</li>
+</ul>
+</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/separated_nested_list.md b/library/parsedown/test/data/separated_nested_list.md
new file mode 100644
index 000000000..d7cd1af79
--- /dev/null
+++ b/library/parsedown/test/data/separated_nested_list.md
@@ -0,0 +1,4 @@
+- li
+
+ - li
+ - li \ No newline at end of file
diff --git a/library/parsedown/test/data/setext_header.html b/library/parsedown/test/data/setext_header.html
new file mode 100644
index 000000000..60aac0815
--- /dev/null
+++ b/library/parsedown/test/data/setext_header.html
@@ -0,0 +1,5 @@
+<h1>h1</h1>
+<h2>h2</h2>
+<h2>single character</h2>
+<p>not a header</p>
+<hr /> \ No newline at end of file
diff --git a/library/parsedown/test/data/setext_header.md b/library/parsedown/test/data/setext_header.md
new file mode 100644
index 000000000..c43b52c36
--- /dev/null
+++ b/library/parsedown/test/data/setext_header.md
@@ -0,0 +1,12 @@
+h1
+==
+
+h2
+--
+
+single character
+-
+
+not a header
+
+------------ \ No newline at end of file
diff --git a/library/parsedown/test/data/simple_blockquote.html b/library/parsedown/test/data/simple_blockquote.html
new file mode 100644
index 000000000..8225d57cc
--- /dev/null
+++ b/library/parsedown/test/data/simple_blockquote.html
@@ -0,0 +1,11 @@
+<blockquote>
+<p>quote</p>
+</blockquote>
+<p>indented:</p>
+<blockquote>
+<p>quote</p>
+</blockquote>
+<p>no space after <code>&gt;</code>:</p>
+<blockquote>
+<p>quote</p>
+</blockquote> \ No newline at end of file
diff --git a/library/parsedown/test/data/simple_blockquote.md b/library/parsedown/test/data/simple_blockquote.md
new file mode 100644
index 000000000..22b6b11a9
--- /dev/null
+++ b/library/parsedown/test/data/simple_blockquote.md
@@ -0,0 +1,7 @@
+> quote
+
+indented:
+ > quote
+
+no space after `>`:
+>quote \ No newline at end of file
diff --git a/library/parsedown/test/data/simple_table.html b/library/parsedown/test/data/simple_table.html
new file mode 100644
index 000000000..237d7efb3
--- /dev/null
+++ b/library/parsedown/test/data/simple_table.html
@@ -0,0 +1,37 @@
+<table>
+<thead>
+<tr>
+<th>header 1</th>
+<th>header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>cell 1.1</td>
+<td>cell 1.2</td>
+</tr>
+<tr>
+<td>cell 2.1</td>
+<td>cell 2.2</td>
+</tr>
+</tbody>
+</table>
+<hr />
+<table>
+<thead>
+<tr>
+<th style="text-align: left;">header 1</th>
+<th>header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td style="text-align: left;">cell 1.1</td>
+<td>cell 1.2</td>
+</tr>
+<tr>
+<td style="text-align: left;">cell 2.1</td>
+<td>cell 2.2</td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/library/parsedown/test/data/simple_table.md b/library/parsedown/test/data/simple_table.md
new file mode 100644
index 000000000..466d140e3
--- /dev/null
+++ b/library/parsedown/test/data/simple_table.md
@@ -0,0 +1,11 @@
+header 1 | header 2
+-------- | --------
+cell 1.1 | cell 1.2
+cell 2.1 | cell 2.2
+
+---
+
+header 1 | header 2
+:------- | --------
+cell 1.1 | cell 1.2
+cell 2.1 | cell 2.2 \ No newline at end of file
diff --git a/library/parsedown/test/data/span-level_html.html b/library/parsedown/test/data/span-level_html.html
new file mode 100644
index 000000000..f852a25a2
--- /dev/null
+++ b/library/parsedown/test/data/span-level_html.html
@@ -0,0 +1,5 @@
+<p>an <b>important</b> <a href=''>link</a></p>
+<p>broken<br/>
+line</p>
+<p><b>inline tag</b> at the beginning</p>
+<p><span><a href="http://example.com">http://example.com</a></span></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/span-level_html.md b/library/parsedown/test/data/span-level_html.md
new file mode 100644
index 000000000..f22196555
--- /dev/null
+++ b/library/parsedown/test/data/span-level_html.md
@@ -0,0 +1,8 @@
+an <b>important</b> <a href=''>link</a>
+
+broken<br/>
+line
+
+<b>inline tag</b> at the beginning
+
+<span>http://example.com</span> \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_dense_list.html b/library/parsedown/test/data/sparse_dense_list.html
new file mode 100644
index 000000000..095bc7396
--- /dev/null
+++ b/library/parsedown/test/data/sparse_dense_list.html
@@ -0,0 +1,7 @@
+<ul>
+<li>
+<p>li</p>
+</li>
+<li>li</li>
+<li>li</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_dense_list.md b/library/parsedown/test/data/sparse_dense_list.md
new file mode 100644
index 000000000..576842277
--- /dev/null
+++ b/library/parsedown/test/data/sparse_dense_list.md
@@ -0,0 +1,4 @@
+- li
+
+- li
+- li \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_html.html b/library/parsedown/test/data/sparse_html.html
new file mode 100644
index 000000000..9e896274c
--- /dev/null
+++ b/library/parsedown/test/data/sparse_html.html
@@ -0,0 +1,8 @@
+<div>
+line 1
+
+line 2
+line 3
+
+line 4
+</div> \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_html.md b/library/parsedown/test/data/sparse_html.md
new file mode 100644
index 000000000..9e896274c
--- /dev/null
+++ b/library/parsedown/test/data/sparse_html.md
@@ -0,0 +1,8 @@
+<div>
+line 1
+
+line 2
+line 3
+
+line 4
+</div> \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_list.html b/library/parsedown/test/data/sparse_list.html
new file mode 100644
index 000000000..452b2b86d
--- /dev/null
+++ b/library/parsedown/test/data/sparse_list.html
@@ -0,0 +1,15 @@
+<ul>
+<li>
+<p>li</p>
+</li>
+<li>li</li>
+</ul>
+<hr />
+<ul>
+<li>
+<p>li</p>
+<ul>
+<li>indented li</li>
+</ul>
+</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/sparse_list.md b/library/parsedown/test/data/sparse_list.md
new file mode 100644
index 000000000..362a35f57
--- /dev/null
+++ b/library/parsedown/test/data/sparse_list.md
@@ -0,0 +1,9 @@
+- li
+
+- li
+
+---
+
+- li
+
+ - indented li \ No newline at end of file
diff --git a/library/parsedown/test/data/special_characters.html b/library/parsedown/test/data/special_characters.html
new file mode 100644
index 000000000..3b652c338
--- /dev/null
+++ b/library/parsedown/test/data/special_characters.html
@@ -0,0 +1,6 @@
+<p>AT&amp;T has an ampersand in their name</p>
+<p>this &amp; that</p>
+<p>4 &lt; 5 and 6 &gt; 5</p>
+<p><a href="http://example.com/autolink?a=1&amp;b=2">http://example.com/autolink?a=1&amp;b=2</a></p>
+<p><a href="/script?a=1&amp;b=2">inline link</a></p>
+<p><a href="http://example.com/?a=1&amp;b=2">reference link</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/special_characters.md b/library/parsedown/test/data/special_characters.md
new file mode 100644
index 000000000..111b03b63
--- /dev/null
+++ b/library/parsedown/test/data/special_characters.md
@@ -0,0 +1,13 @@
+AT&T has an ampersand in their name
+
+this & that
+
+4 < 5 and 6 > 5
+
+<http://example.com/autolink?a=1&b=2>
+
+[inline link](/script?a=1&b=2)
+
+[reference link][1]
+
+[1]: http://example.com/?a=1&b=2 \ No newline at end of file
diff --git a/library/parsedown/test/data/strikethrough.html b/library/parsedown/test/data/strikethrough.html
new file mode 100644
index 000000000..2a9da9821
--- /dev/null
+++ b/library/parsedown/test/data/strikethrough.html
@@ -0,0 +1,3 @@
+<p><del>strikethrough</del></p>
+<p>here's <del>one</del> followed by <del>another one</del></p>
+<p>~~ this ~~ is not one neither is ~this~</p> \ No newline at end of file
diff --git a/library/parsedown/test/data/strikethrough.md b/library/parsedown/test/data/strikethrough.md
new file mode 100644
index 000000000..d169144d2
--- /dev/null
+++ b/library/parsedown/test/data/strikethrough.md
@@ -0,0 +1,5 @@
+~~strikethrough~~
+
+here's ~~one~~ followed by ~~another one~~
+
+~~ this ~~ is not one neither is ~this~ \ No newline at end of file
diff --git a/library/parsedown/test/data/strong_em.html b/library/parsedown/test/data/strong_em.html
new file mode 100644
index 000000000..b709c9914
--- /dev/null
+++ b/library/parsedown/test/data/strong_em.html
@@ -0,0 +1,6 @@
+<p><em>em <strong>strong em</strong></em></p>
+<p><em><strong>strong em</strong> em</em></p>
+<p><em>em <strong>strong em</strong> em</em></p>
+<p><em>em <strong>strong em</strong></em></p>
+<p><em><strong>strong em</strong> em</em></p>
+<p><em>em <strong>strong em</strong> em</em></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/strong_em.md b/library/parsedown/test/data/strong_em.md
new file mode 100644
index 000000000..f2aa3c782
--- /dev/null
+++ b/library/parsedown/test/data/strong_em.md
@@ -0,0 +1,11 @@
+*em **strong em***
+
+***strong em** em*
+
+*em **strong em** em*
+
+_em __strong em___
+
+___strong em__ em_
+
+_em __strong em__ em_ \ No newline at end of file
diff --git a/library/parsedown/test/data/tab-indented_code_block.html b/library/parsedown/test/data/tab-indented_code_block.html
new file mode 100644
index 000000000..7c140de73
--- /dev/null
+++ b/library/parsedown/test/data/tab-indented_code_block.html
@@ -0,0 +1,6 @@
+<pre><code>&lt;?php
+
+$message = 'Hello World!';
+echo $message;
+
+echo "following a blank line";</code></pre> \ No newline at end of file
diff --git a/library/parsedown/test/data/tab-indented_code_block.md b/library/parsedown/test/data/tab-indented_code_block.md
new file mode 100644
index 000000000..a405a1609
--- /dev/null
+++ b/library/parsedown/test/data/tab-indented_code_block.md
@@ -0,0 +1,6 @@
+ <?php
+
+ $message = 'Hello World!';
+ echo $message;
+
+ echo "following a blank line"; \ No newline at end of file
diff --git a/library/parsedown/test/data/table_inline_markdown.html b/library/parsedown/test/data/table_inline_markdown.html
new file mode 100644
index 000000000..f4cebecba
--- /dev/null
+++ b/library/parsedown/test/data/table_inline_markdown.html
@@ -0,0 +1,22 @@
+<table>
+<thead>
+<tr>
+<th><em>header</em> 1</th>
+<th>header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td><em>cell</em> 1.1</td>
+<td><del>cell</del> 1.2</td>
+</tr>
+<tr>
+<td><code>|</code> 2.1</td>
+<td>| 2.2</td>
+</tr>
+<tr>
+<td><code>\|</code> 2.1</td>
+<td><a href="/">link</a></td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/library/parsedown/test/data/table_inline_markdown.md b/library/parsedown/test/data/table_inline_markdown.md
new file mode 100644
index 000000000..2f3c6200f
--- /dev/null
+++ b/library/parsedown/test/data/table_inline_markdown.md
@@ -0,0 +1,5 @@
+| _header_ 1 | header 2 |
+| ------------ | ------------ |
+| _cell_ 1.1 | ~~cell~~ 1.2 |
+| `|` 2.1 | \| 2.2 |
+| `\|` 2.1 | [link](/) | \ No newline at end of file
diff --git a/library/parsedown/test/data/text_reference.html b/library/parsedown/test/data/text_reference.html
new file mode 100644
index 000000000..11e4d37ff
--- /dev/null
+++ b/library/parsedown/test/data/text_reference.html
@@ -0,0 +1,8 @@
+<p><a href="http://example.com">reference link</a></p>
+<p><a href="http://example.com">one</a> with a semantic name</p>
+<p>[one][404] with no definition</p>
+<p><a href="http://example.com">multiline
+one</a> defined on 2 lines</p>
+<p><a href="http://example.com">one</a> with a mixed case label and an upper case definition</p>
+<p><a href="http://example.com">one</a> with the a label on the next line</p>
+<p><a href="http://example.com"><code>link</code></a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/text_reference.md b/library/parsedown/test/data/text_reference.md
new file mode 100644
index 000000000..1a66a5cf6
--- /dev/null
+++ b/library/parsedown/test/data/text_reference.md
@@ -0,0 +1,21 @@
+[reference link][1]
+
+[1]: http://example.com
+
+[one][website] with a semantic name
+
+[website]: http://example.com
+
+[one][404] with no definition
+
+[multiline
+one][website] defined on 2 lines
+
+[one][Label] with a mixed case label and an upper case definition
+
+[LABEL]: http://example.com
+
+[one]
+[1] with the a label on the next line
+
+[`link`][website] \ No newline at end of file
diff --git a/library/parsedown/test/data/unordered_list.html b/library/parsedown/test/data/unordered_list.html
new file mode 100644
index 000000000..cd95567b7
--- /dev/null
+++ b/library/parsedown/test/data/unordered_list.html
@@ -0,0 +1,10 @@
+<ul>
+<li>li</li>
+<li>li</li>
+</ul>
+<p>mixed markers:</p>
+<ul>
+<li>li</li>
+<li>li</li>
+<li>li</li>
+</ul> \ No newline at end of file
diff --git a/library/parsedown/test/data/unordered_list.md b/library/parsedown/test/data/unordered_list.md
new file mode 100644
index 000000000..cf62c99f2
--- /dev/null
+++ b/library/parsedown/test/data/unordered_list.md
@@ -0,0 +1,8 @@
+- li
+- li
+
+mixed markers:
+
+* li
++ li
+- li \ No newline at end of file
diff --git a/library/parsedown/test/data/untidy_table.html b/library/parsedown/test/data/untidy_table.html
new file mode 100644
index 000000000..88e1c2bd4
--- /dev/null
+++ b/library/parsedown/test/data/untidy_table.html
@@ -0,0 +1,18 @@
+<table>
+<thead>
+<tr>
+<th>header 1</th>
+<th>header 2</th>
+</tr>
+</thead>
+<tbody>
+<tr>
+<td>cell 1.1</td>
+<td>cell 1.2</td>
+</tr>
+<tr>
+<td>cell 2.1</td>
+<td>cell 2.2</td>
+</tr>
+</tbody>
+</table> \ No newline at end of file
diff --git a/library/parsedown/test/data/untidy_table.md b/library/parsedown/test/data/untidy_table.md
new file mode 100644
index 000000000..8524eb184
--- /dev/null
+++ b/library/parsedown/test/data/untidy_table.md
@@ -0,0 +1,4 @@
+| header 1 | header 2 |
+| ------------- | ----------- |
+| cell 1.1 | cell 1.2 |
+| cell 2.1 | cell 2.2 | \ No newline at end of file
diff --git a/library/parsedown/test/data/url_autolinking.html b/library/parsedown/test/data/url_autolinking.html
new file mode 100644
index 000000000..58ca94c6b
--- /dev/null
+++ b/library/parsedown/test/data/url_autolinking.html
@@ -0,0 +1,3 @@
+<p>an autolink <a href="http://example.com">http://example.com</a></p>
+<p>inside of brackets [<a href="http://example.com">http://example.com</a>], inside of braces {<a href="http://example.com">http://example.com</a>}, inside of parentheses (<a href="http://example.com">http://example.com</a>)</p>
+<p>trailing slash <a href="http://example.com/">http://example.com/</a> and <a href="http://example.com/path/">http://example.com/path/</a></p> \ No newline at end of file
diff --git a/library/parsedown/test/data/url_autolinking.md b/library/parsedown/test/data/url_autolinking.md
new file mode 100644
index 000000000..840f35404
--- /dev/null
+++ b/library/parsedown/test/data/url_autolinking.md
@@ -0,0 +1,5 @@
+an autolink http://example.com
+
+inside of brackets [http://example.com], inside of braces {http://example.com}, inside of parentheses (http://example.com)
+
+trailing slash http://example.com/ and http://example.com/path/ \ No newline at end of file
diff --git a/library/parsedown/test/data/whitespace.html b/library/parsedown/test/data/whitespace.html
new file mode 100644
index 000000000..f2dd7a002
--- /dev/null
+++ b/library/parsedown/test/data/whitespace.html
@@ -0,0 +1 @@
+<pre><code>code</code></pre> \ No newline at end of file
diff --git a/library/parsedown/test/data/whitespace.md b/library/parsedown/test/data/whitespace.md
new file mode 100644
index 000000000..4cf926a8a
--- /dev/null
+++ b/library/parsedown/test/data/whitespace.md
@@ -0,0 +1,5 @@
+
+
+ code
+
+ \ No newline at end of file