syntax tag. * * @group parser_code */ class CodeTest extends ParserTestBase { function setUp() : void { parent::setUp(); $this->P->addMode('code',new Code()); } function testCode() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test',null,null]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeBash() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','bash',null]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeDownload() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','bash','script.sh']], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeToken() { $this->P->parse('Foo BarTest'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo Bar']], ['p_close',[]], ['code',['Test',null,null]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_OneOption() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => 1] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_TwoOptions() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'highlight_lines_extra' => [3] ]]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_UnknownOption() { // `[unknown=...]` contains no recognised option, so the options // slot stays absent — the call shape is the 3-arg default rather // than a 4-arg call with a null options slot. $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableLineNumbers1() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableLineNumbers2() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableLineNumbers3() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => false] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableLineNumbers4() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_HighlightLinesExtra1() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'highlight_lines_extra' => [42, 123, 456, 789] ]]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_HighlightLinesExtra2() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'highlight_lines_extra' => [1]] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_HighlightLinesExtra3() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'highlight_lines_extra' => [1]] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_StartLineNumbersAt1() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'start_line_numbers_at' => 42] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_StartLineNumbersAt2() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'start_line_numbers_at' => 1] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_StartLineNumbersAt3() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_line_numbers' => true, 'start_line_numbers_at' => 1] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableKeywordLinks1() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_keyword_links' => false] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testCodeOptionsArray_EnableKeywordLinks2() { $this->P->parse('Foo Test Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['p_close',[]], ['code',['Test','C', null, ['enable_keyword_links' => true] ]], ['p_open',[]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } }