| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | <?php/** * @copyright Copyright (c) 2014 Carsten Brandt * @license https://github.com/cebe/markdown/blob/master/LICENSE * @link https://github.com/cebe/markdown#readme */namespace cebe\markdown\tests;use cebe\markdown\Parser;/** * Test case for the parser base class. * * @author Carsten Brandt <mail@cebe.cc> * @group default */class ParserTest extends  \PHPUnit_Framework_TestCase{	public function testMarkerOrder()	{		$parser = new TestParser();		$parser->markers = [			'[' => 'parseMarkerA',			'[[' => 'parseMarkerB',		];		$this->assertEquals("<p>Result is A</p>\n", $parser->parse('Result is [abc]'));		$this->assertEquals("<p>Result is B</p>\n", $parser->parse('Result is [[abc]]'));		$this->assertEquals('Result is A', $parser->parseParagraph('Result is [abc]'));		$this->assertEquals('Result is B', $parser->parseParagraph('Result is [[abc]]'));		$parser = new TestParser();		$parser->markers = [			'[[' => 'parseMarkerB',			'[' => 'parseMarkerA',		];		$this->assertEquals("<p>Result is A</p>\n", $parser->parse('Result is [abc]'));		$this->assertEquals("<p>Result is B</p>\n", $parser->parse('Result is [[abc]]'));		$this->assertEquals('Result is A', $parser->parseParagraph('Result is [abc]'));		$this->assertEquals('Result is B', $parser->parseParagraph('Result is [[abc]]'));	}	public function testMaxNestingLevel()	{		$parser = new TestParser();		$parser->markers = [			'[' => 'parseMarkerC',		];		$parser->maximumNestingLevel = 3;		$this->assertEquals("(C-a(C-b(C-c)))", $parser->parseParagraph('[a[b[c]]]'));		$parser->maximumNestingLevel = 2;		$this->assertEquals("(C-a(C-b[c]))", $parser->parseParagraph('[a[b[c]]]'));		$parser->maximumNestingLevel = 1;		$this->assertEquals("(C-a[b[c]])", $parser->parseParagraph('[a[b[c]]]'));	}}class TestParser extends Parser{	public $markers = [];	protected function inlineMarkers()	{		return $this->markers;	}	protected function parseMarkerA($text)	{		return [['text', 'A'], strrpos($text, ']') + 1];	}	protected function parseMarkerB($text)	{		return [['text', 'B'], strrpos($text, ']') + 1];	}	protected function parseMarkerC($text)	{		$terminatingMarkerPos = strrpos($text, ']');		$inside = $this->parseInline(substr($text, 1, $terminatingMarkerPos - 1));		return [['text', '(C-' . $this->renderAbsy($inside) . ')'], $terminatingMarkerPos + 1];	}}
 |