getParserOutput( $this->getMockTitle() ); } /** * Get WikitextStructure for given text * @param $text * @return WikiTextStructure */ private function getStructure( $text ) { return new WikiTextStructure( $this->getParserOutput( $text ) ); } public function testCategories() { $text = <<getStructure( $text ); $cats = $struct->categories(); $this->assertCount( 2, $cats ); $this->assertContains( "Some Category", $cats ); $this->assertContains( "Yet another category", $cats ); } public function testOutgoingLinks() { $text = <<getStructure( $text ); $links = $struct->outgoingLinks(); $this->assertContains( "Some_Page", $links ); $this->assertContains( "Template:Template", $links ); $this->assertContains( "Template:Another_template", $links ); $this->assertContains( "Template:Lowercase", $links ); $this->assertContains( "Talk:TestTitle", $links ); $this->assertCount( 5, $links ); } public function testTemplates() { $text = <<setTemporaryHook( 'TitleExists', function ( Title $title, &$exists ) { $txt = $title->getBaseText(); if ( $txt[0] != 'X' ) { $exists = true; } return true; } ); $struct = $this->getStructure( $text ); $templates = $struct->templates(); $this->assertCount( 3, $templates ); $this->assertContains( "Template:Template", $templates ); $this->assertContains( "Template:Another template", $templates ); $this->assertContains( "Template:Lowercase", $templates ); } public function testHeadings() { $text = <<2 === and more text == Wikitext '''in''' [[Heading]] and also html == more text ==== See also ==== * Also things to see! END; $struct = $this->getStructure( $text ); $headings = $struct->headings(); $this->assertCount( 4, $headings ); $this->assertContains( "Heading one", $headings ); $this->assertContains( "heading two", $headings ); $this->assertContains( "Applicability of the strict mass-energy equivalence formula, E = mc2", $headings ); $this->assertContains( "Wikitext in Heading and also html", $headings ); } public function testDefaultSort() { $text = <<getStructure( $text ); $this->assertEquals( "Michel, Louise", $struct->getDefaultSort() ); } public function testHeadingsFirst() { $text = <<getStructure( $text ); $headings = $struct->headings(); $this->assertCount( 2, $headings ); $this->assertContains( "Heading one", $headings ); $this->assertContains( "heading two", $headings ); } public function testHeadingsNone() { $text = "This text is completely devoid of headings."; $struct = $this->getStructure( $text ); $headings = $struct->headings(); $this->assertArrayEquals( [], $headings ); } public function testTexts() { $text = <<text === And more headers === {| class="wikitable" |- ! Header table |- | row in table |- | another row in table |} END; $struct = $this->getStructure( $text ); $this->assertEquals( "Opening text is opening.", $struct->getOpeningText() ); $this->assertEquals( "Opening text is opening. Then we got more text", $struct->getMainText() ); $this->assertEquals( [ "Header table row in table another row in table" ], $struct->getAuxiliaryText() ); } }