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