* (bug 31100) Fix regression in sidebar (special: page links lost parameters)
[lhc/web/wiklou.git] / tests / phpunit / includes / TitleTest.php
1 <?php
2
3 class TitleTest extends MediaWikiTestCase {
4
5 function testLegalChars() {
6 $titlechars = Title::legalChars();
7
8 foreach ( range( 1, 255 ) as $num ) {
9 $chr = chr( $num );
10 if ( strpos( "#[]{}<>|", $chr ) !== false || preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
11 $this->assertFalse( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is not a valid titlechar" );
12 } else {
13 $this->assertTrue( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is a valid titlechar" );
14 }
15 }
16 }
17
18 /**
19 * @dataProvider dataBug31100
20 */
21 function testBug31100FixSpecialName( $text, $expectedParam ) {
22 $title = Title::newFromText( $text );
23 $fixed = $title->fixSpecialName();
24 $stuff = explode( '/', $fixed->getDbKey(), 2 );
25 if ( count( $stuff ) == 2 ) {
26 $par = $stuff[1];
27 } else {
28 $par = null;
29 }
30 $this->assertEquals( $expectedParam, $par, "Bug 31100 regression check: Title->fixSpecialName() should preserve parameter" );
31 }
32
33 function dataBug31100() {
34 return array(
35 array( 'Special:Version', null ),
36 array( 'Special:Version/', '' ),
37 array( 'Special:Version/param', 'param' ),
38 );
39 }
40 }