P->addMode('footnote',new Footnote()); } function testFootnote() { $this->P->parse('Foo (( testing )) Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' testing ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testNotAFootnote() { $this->P->parse("Foo (( testing\n Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\nFoo (( testing\n Bar"]], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteLinefeed() { $this->P->addMode('eol',new Eol()); $this->P->parse("Foo (( testing\ntesting )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',['Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[" testing\ntesting "]], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteNested() { $this->P->parse('Foo (( x((y))z )) Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' x((y']], ['footnote_close',[]], ]]], ['cdata',['z )) Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteEol() { $this->P->addMode('eol',new Eol()); $this->P->parse("Foo \nX(( test\ning ))Y\n Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',['Foo '."\n".'X']], ['nest', [ [ ['footnote_open',[]], ['cdata',[" test\ning "]], ['footnote_close',[]], ]]], ['cdata',['Y'."\n".' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteStrong() { $this->P->addMode('strong',new Strong()); $this->P->parse('Foo (( **testing** )) Bar'); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['strong_open',[]], ['cdata',['testing']], ['strong_close',[]], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteHr() { $this->P->addMode('hr',new Hr()); $this->P->parse("Foo (( \n ---- \n )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['hr',[]], ['cdata',["\n "]], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteCode() { $this->P->addMode('code',new Code()); $this->P->parse("Foo (( Test )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['code',['Test',null,null]], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnotePreformatted() { $this->P->addMode('preformatted',new Preformatted()); $this->P->parse("Foo (( \n Test\n )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['preformatted',['Test']], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnotePreformattedEol() { $this->P->addMode('preformatted',new Preformatted()); $this->P->addMode('eol',new Eol()); $this->P->parse("Foo (( \n Test\n )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',['Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['preformatted',['Test']], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteUnformatted() { $this->P->addMode('unformatted',new Unformatted()); $this->P->parse("Foo (( Test )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[' ']], ['unformatted',['Test']], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteNotHeader() { $this->P->addMode('unformatted',new Unformatted()); $this->P->parse("Foo (( \n====Test====\n )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['cdata',[" \n====Test====\n "]], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteTable() { $this->P->addMode('table',new Table()); $this->P->parse("Foo (( | Row 0 Col 1 | Row 0 Col 2 | Row 0 Col 3 | | Row 1 Col 1 | Row 1 Col 2 | Row 1 Col 3 | )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['table_open',[3, 2, 8]], ['tablerow_open',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 0 Col 1 ']], ['tablecell_close',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 0 Col 2 ']], ['tablecell_close',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 0 Col 3 ']], ['tablecell_close',[]], ['tablerow_close',[]], ['tablerow_open',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 1 Col 1 ']], ['tablecell_close',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 1 Col 2 ']], ['tablecell_close',[]], ['tablecell_open',[1,'left',1]], ['cdata',[' Row 1 Col 3 ']], ['tablecell_close',[]], ['tablerow_close',[]], ['table_close',[123]], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteList() { $this->P->addMode('listblock',new ListBlock()); $this->P->parse("Foo (( *A * B * C )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['listu_open',[]], ['listitem_open',[1,Lists::NODE]], ['listcontent_open',[]], ['cdata',["A"]], ['listcontent_close',[]], ['listu_open',[]], ['listitem_open',[2]], ['listcontent_open',[]], ['cdata',[' B']], ['listcontent_close',[]], ['listitem_close',[]], ['listu_close',[]], ['listitem_close',[]], ['listitem_open',[1]], ['listcontent_open',[]], ['cdata',[' C']], ['listcontent_close',[]], ['listitem_close',[]], ['listu_close',[]], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteQuote() { $this->P->addMode('quote',new Quote()); $this->P->parse("Foo (( > def >>ghi )) Bar"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n".'Foo ']], ['nest', [ [ ['footnote_open',[]], ['quote_open',[]], ['cdata',[" def"]], ['quote_open',[]], ['cdata',["ghi"]], ['quote_close',[]], ['quote_close',[]], ['cdata',[' ']], ['footnote_close',[]], ]]], ['cdata',[' Bar']], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } function testFootnoteNesting() { $this->P->addMode('strong',new Strong()); $this->P->parse("(( a ** (( b )) ** c ))"); $calls = [ ['document_start',[]], ['p_open',[]], ['cdata',["\n"]], ['nest', [ [ ['footnote_open',[]], ['cdata',[' a ']], ['strong_open',[]], ['cdata',[' (( b ']], ['footnote_close',[]], ]]], ['cdata',[" "]], ['strong_close',[]], ['cdata',[" c ))"]], ['p_close',[]], ['document_end',[]], ]; $this->assertCalls($calls, $this->H->calls); } }