MediaWiki REL1_31
WikitextStructureTest.php
Go to the documentation of this file.
1<?php
2
7
8 private function getMockTitle() {
9 return Title::newFromText( "TestTitle" );
10 }
11
17 private function getParserOutput( $text ) {
18 $content = new WikitextContent( $text );
19 return $content->getParserOutput( $this->getMockTitle() );
20 }
21
27 private function getStructure( $text ) {
28 return new WikiTextStructure( $this->getParserOutput( $text ) );
29 }
30
31 public function testHeadings() {
32 $text = <<<END
33Some text here
34== Heading one ==
35Some text
36==== heading two ====
37More text
38=== Applicability of the strict mass-energy equivalence formula, ''E'' = ''mc''<sup>2</sup> ===
39and more text
40== Wikitext '''in''' [[Heading]] and also <b>html</b> ==
41more text
42==== See also ====
43* Also things to see!
44END;
45 $struct = $this->getStructure( $text );
46 $headings = $struct->headings();
47 $this->assertCount( 4, $headings );
48 $this->assertContains( "Heading one", $headings );
49 $this->assertContains( "heading two", $headings );
50 $this->assertContains( "Applicability of the strict mass-energy equivalence formula, E = mc2",
51 $headings );
52 $this->assertContains( "Wikitext in Heading and also html", $headings );
53 }
54
55 public function testDefaultSort() {
56 $text = <<<END
57Louise Michel
58== Heading one ==
59Some text
60==== See also ====
61* Also things to see!
62{{DEFAULTSORT:Michel, Louise}}
63END;
64 $struct = $this->getStructure( $text );
65 $this->assertEquals( "Michel, Louise", $struct->getDefaultSort() );
66 }
67
68 public function testHeadingsFirst() {
69 $text = <<<END
70== Heading one ==
71Some text
72==== heading two ====
73END;
74 $struct = $this->getStructure( $text );
75 $headings = $struct->headings();
76 $this->assertCount( 2, $headings );
77 $this->assertContains( "Heading one", $headings );
78 $this->assertContains( "heading two", $headings );
79 }
80
81 public function testHeadingsNone() {
82 $text = "This text is completely devoid of headings.";
83 $struct = $this->getStructure( $text );
84 $headings = $struct->headings();
85 $this->assertArrayEquals( [], $headings );
86 }
87
88 public function testTexts() {
89 $text = <<<END
90Opening text is opening.
91== Then comes header ==
92Then we got more<br>text
93=== And more headers ===
94{| class="wikitable"
95|-
96! Header table
97|-
98| row in table
99|-
100| another row in table
101|}
102END;
103 $struct = $this->getStructure( $text );
104 $this->assertEquals( "Opening text is opening.", $struct->getOpeningText() );
105 $this->assertEquals( "Opening text is opening. Then we got more text",
106 $struct->getMainText() );
107 $this->assertEquals( [ "Header table row in table another row in table" ],
108 $struct->getAuxiliaryText() );
109 }
110}
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two distribute and or modify the software Also
Definition COPYING.txt:43
Base class that store and restore the Language objects.
assertArrayEquals(array $expected, array $actual, $ordered=false, $named=false)
Assert that two arrays are equal.
Class allowing to explore structure of parsed wikitext.
Content object for wiki text pages.
getParserOutput( $text)
Get parser output for Wiki text.
getStructure( $text)
Get WikitextStructure for given text.
deferred txt A few of the database updates required by various functions here can be deferred until after the result page is displayed to the user For updating the view updating the linked to tables after a etc PHP does not yet have any way to tell the server to actually return and disconnect while still running these but it might have such a feature in the future We handle these by creating a deferred update object and putting those objects on a global then executing the whole list after the page is displayed We don t do anything smart like collating updates to the same table or such because the list is almost always going to have just one item on if so it s not worth the trouble Since there is a job queue in the jobs table
Definition deferred.txt:16