xref: /dokuwiki/_test/tests/Parsing/HandlerTest.php (revision 71096e46fcbfaeaa808667aba794e77fe2780169)
1*71096e46SAndreas Gohr<?php
2*71096e46SAndreas Gohr
3*71096e46SAndreas Gohrnamespace dokuwiki\test\Parsing;
4*71096e46SAndreas Gohr
5*71096e46SAndreas Gohruse dokuwiki\Parsing\Handler;
6*71096e46SAndreas Gohruse dokuwiki\Parsing\ParserMode\ModeInterface;
7*71096e46SAndreas Gohr
8*71096e46SAndreas Gohrclass HandlerTest extends \DokuWikiTest
9*71096e46SAndreas Gohr{
10*71096e46SAndreas Gohr    function testGetModeNameReturnsOriginalName()
11*71096e46SAndreas Gohr    {
12*71096e46SAndreas Gohr        $handler = new Handler();
13*71096e46SAndreas Gohr
14*71096e46SAndreas Gohr        // create a simple mode that records what getModeName() returns
15*71096e46SAndreas Gohr        $mode = new class extends \dokuwiki\Parsing\ParserMode\AbstractMode {
16*71096e46SAndreas Gohr            public $receivedModeName = '';
17*71096e46SAndreas Gohr            public function getSort() { return 0; }
18*71096e46SAndreas Gohr            public function handle($match, $state, $pos, Handler $handler)
19*71096e46SAndreas Gohr            {
20*71096e46SAndreas Gohr                $this->receivedModeName = $handler->getModeName();
21*71096e46SAndreas Gohr                return true;
22*71096e46SAndreas Gohr            }
23*71096e46SAndreas Gohr        };
24*71096e46SAndreas Gohr
25*71096e46SAndreas Gohr        $handler->registerModeObject('resolved', $mode);
26*71096e46SAndreas Gohr
27*71096e46SAndreas Gohr        // simulate dispatch with a remapped name (original differs from resolved)
28*71096e46SAndreas Gohr        $handler->handleToken('resolved', 'test', DOKU_LEXER_SPECIAL, 0, 'original');
29*71096e46SAndreas Gohr
30*71096e46SAndreas Gohr        $this->assertSame('original', $mode->receivedModeName);
31*71096e46SAndreas Gohr    }
32*71096e46SAndreas Gohr
33*71096e46SAndreas Gohr    function testGetModeNameFallsBackToModeName()
34*71096e46SAndreas Gohr    {
35*71096e46SAndreas Gohr        $handler = new Handler();
36*71096e46SAndreas Gohr
37*71096e46SAndreas Gohr        $mode = new class extends \dokuwiki\Parsing\ParserMode\AbstractMode {
38*71096e46SAndreas Gohr            public $receivedModeName = '';
39*71096e46SAndreas Gohr            public function getSort() { return 0; }
40*71096e46SAndreas Gohr            public function handle($match, $state, $pos, Handler $handler)
41*71096e46SAndreas Gohr            {
42*71096e46SAndreas Gohr                $this->receivedModeName = $handler->getModeName();
43*71096e46SAndreas Gohr                return true;
44*71096e46SAndreas Gohr            }
45*71096e46SAndreas Gohr        };
46*71096e46SAndreas Gohr
47*71096e46SAndreas Gohr        $handler->registerModeObject('mymode', $mode);
48*71096e46SAndreas Gohr
49*71096e46SAndreas Gohr        // no original name passed — should fall back to the resolved name
50*71096e46SAndreas Gohr        $handler->handleToken('mymode', 'test', DOKU_LEXER_SPECIAL, 0);
51*71096e46SAndreas Gohr
52*71096e46SAndreas Gohr        $this->assertSame('mymode', $mode->receivedModeName);
53*71096e46SAndreas Gohr    }
54*71096e46SAndreas Gohr}
55