3 class TitleTest
extends MediaWikiTestCase
{
5 function testLegalChars() {
6 $titlechars = Title
::legalChars();
8 foreach ( range( 1, 255 ) as $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" );
13 $this->assertTrue( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is a valid titlechar" );
19 * @dataProvider dataBug31100
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 ) {
30 $this->assertEquals( $expectedParam, $par, "Bug 31100 regression check: Title->fixSpecialName() should preserve parameter" );
33 function dataBug31100() {
35 array( 'Special:Version', null ),
36 array( 'Special:Version/', '' ),
37 array( 'Special:Version/param', 'param' ),
42 * Auth-less test of Title::isValidMoveOperation
45 * @param string $source
46 * @param string $target
47 * @param array|string|true $expected Required error
48 * @dataProvider dataTestIsValidMoveOperation
50 function testIsValidMoveOperation( $source, $target, $expected ) {
51 $title = Title
::newFromText( $source );
52 $nt = Title
::newFromText( $target );
53 $errors = $title->isValidMoveOperation( $nt, false );
54 if ( $expected === true ) {
55 $this->assertTrue( $errors );
57 $errors = $this->flattenErrorsArray( $errors );
58 foreach ( (array)$expected as $error ) {
59 $this->assertContains( $error, $errors );
64 function flattenErrorsArray( $errors ) {
66 foreach ( $errors as $error ) {
67 $result[] = $error[0];
72 function dataTestIsValidMoveOperation() {
74 array( 'Test', 'Test', 'selfmove' ),
75 array( 'File:Test.jpg', 'Page', 'imagenocrossnamespace' )