diff options
Diffstat (limited to 'library/parsedown/test/ParsedownTest.php')
-rw-r--r-- | library/parsedown/test/ParsedownTest.php | 159 |
1 files changed, 159 insertions, 0 deletions
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><div><em>content</em></div></p> +<p>sparse:</p> +<p><div> +<div class="inner"> +<em>content</em> +</div> +</div></p> +<p>paragraph</p> +<p><style type="text/css"> +p { +color: red; +} +</style></p> +<p>comment</p> +<p><!-- html comment --></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); + } +} |