P->addMode('strong', new Strong()); $this->P->parse('Foo **Bar** Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['strong_open', []], ['cdata', ['Bar']], ['strong_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testEmphasis() { $this->P->addMode('emphasis', new Emphasis()); $this->P->parse('Foo //Bar// Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['emphasis_open', []], ['cdata', ['Bar']], ['emphasis_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testUnderline() { $this->P->addMode('underline', new Underline()); $this->P->parse('Foo __Bar__ Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['underline_open', []], ['cdata', ['Bar']], ['underline_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testMonospace() { $this->P->addMode('monospace', new Monospace()); $this->P->parse("Foo ''Bar'' Baz"); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['monospace_open', []], ['cdata', ['Bar']], ['monospace_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testSubscript() { $this->P->addMode('subscript', new Subscript()); $this->P->parse('Foo Bar Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['subscript_open', []], ['cdata', ['Bar']], ['subscript_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testSuperscript() { $this->P->addMode('superscript', new Superscript()); $this->P->parse('Foo Bar Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['superscript_open', []], ['cdata', ['Bar']], ['superscript_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testDeleted() { $this->P->addMode('deleted', new Deleted()); $this->P->parse('Foo Bar Baz'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['deleted_open', []], ['cdata', ['Bar']], ['deleted_close', []], ['cdata', [' Baz']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testNesting() { $this->P->addMode('strong', new Strong()); $this->P->addMode('emphasis', new Emphasis()); $this->P->parse('Foo **bold //and italic// text** Bar'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['strong_open', []], ['cdata', ['bold ']], ['emphasis_open', []], ['cdata', ['and italic']], ['emphasis_close', []], ['cdata', [' text']], ['strong_close', []], ['cdata', [' Bar']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } function testNoSelfNesting() { $this->P->addMode('strong', new Strong()); $this->P->parse('Foo **bold **not nested** end** Bar'); $calls = [ ['document_start', []], ['p_open', []], ['cdata', ["\nFoo "]], ['strong_open', []], ['cdata', ['bold ']], ['strong_close', []], ['cdata', ['not nested']], ['strong_open', []], ['cdata', [' end']], ['strong_close', []], ['cdata', [' Bar']], ['p_close', []], ['document_end', []], ]; $this->assertCalls($calls, $this->H->calls); } }