* @group default */ class ParserTest extends \PHPUnit_Framework_TestCase { public function testMarkerOrder() { $parser = new TestParser(); $parser->markers = [ '[' => 'parseMarkerA', '[[' => 'parseMarkerB', ]; $this->assertEquals("
Result is A
\n", $parser->parse('Result is [abc]')); $this->assertEquals("Result is B
\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("Result is A
\n", $parser->parse('Result is [abc]')); $this->assertEquals("Result is B
\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]]]')); } public function testKeepZeroAlive() { $parser = new TestParser(); $this->assertEquals("0", $parser->parseParagraph("0")); $this->assertEquals("0
\n", $parser->parse("0")); } } 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]; } }