<?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); } }