wiki.techinc.nl/tests/GlobalTest.php
Brion Vibber 68f8fd1769 * (bug 4679) Work around buggy basename() function in PHP5, which breaks
uploads of files starting with multibyte characters on Linux.
  wfBaseName() doesn't suffer this bug, and understands backslash on
  both Unix and Windows.
2006-01-20 09:03:16 +00:00

211 lines
No EOL
5.5 KiB
PHP

<?php
require_once( 'PHPUnit.php' );
require_once( '../includes/Defines.php' );
require_once( '../includes/Profiling.php' );
require_once( '../includes/GlobalFunctions.php' );
class GlobalTest extends PHPUnit_TestCase {
function GlobalTest( $name ) {
$this->PHPUnit_TestCase( $name );
}
function setUp() {
$this->save = array();
$saveVars = array( 'wgReadOnlyFile' );
foreach( $saveVars as $var ) {
if( isset( $GLOBALS[$var] ) ) {
$this->save[$var] = $GLOBALS[$var];
}
}
$GLOBALS['wgReadOnlyFile'] = wfTempDir() . '/testReadOnly-' . mt_rand();
}
function tearDown() {
foreach( $this->save as $var => $data ) {
$GLOBALS[$var] = $data;
}
}
function testRandom() {
# This could hypothetically fail, but it shouldn't ;)
$this->assertFalse(
wfRandom() == wfRandom() );
}
function testUrlencode() {
$this->assertEquals(
"%E7%89%B9%E5%88%A5:Contributions/Foobar",
wfUrlencode( "\xE7\x89\xB9\xE5\x88\xA5:Contributions/Foobar" ) );
}
function testReadOnlyEmpty() {
$this->assertFalse( wfReadOnly() );
}
function testReadOnlySet() {
$f = fopen( $GLOBALS['wgReadOnlyFile'], "wt" );
fwrite( $f, 'Message' );
fclose( $f );
$this->assertTrue( wfReadOnly() );
unlink( $GLOBALS['wgReadOnlyFile'] );
$this->assertFalse( wfReadOnly() );
}
function testQuotedPrintable() {
$this->assertEquals(
"=?UTF-8?Q?=C4=88u=20legebla=3F?=",
wfQuotedPrintable( "\xc4\x88u legebla?", "UTF-8" ) );
}
function testTime() {
$start = wfTime();
$this->assertType( 'double', $start );
$end = wfTime();
$this->assertTrue( $end > $start, "Time is running backwards!" );
}
function testArrayToCGI() {
$this->assertEquals(
"baz=AT%26T&foo=bar",
wfArrayToCGI(
array( 'baz' => 'AT&T', 'ignore' => '' ),
array( 'foo' => 'bar', 'baz' => 'overridden value' ) ) );
}
function testMimeTypeMatch() {
$this->assertEquals(
'text/html',
mimeTypeMatch( 'text/html',
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.7,
'text/plain' => 0.3 ) ) );
$this->assertEquals(
'text/*',
mimeTypeMatch( 'text/html',
array( 'image/*' => 1.0,
'text/*' => 0.5 ) ) );
$this->assertEquals(
'*/*',
mimeTypeMatch( 'text/html',
array( '*/*' => 1.0 ) ) );
$this->assertNull(
mimeTypeMatch( 'text/html',
array( 'image/png' => 1.0,
'image/svg+xml' => 0.5 ) ) );
}
function testNegotiateType() {
$this->assertEquals(
'text/html',
wfNegotiateType(
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.7,
'text/plain' => 0.5,
'text/*' => 0.2 ),
array( 'text/html' => 1.0 ) ) );
$this->assertEquals(
'application/xhtml+xml',
wfNegotiateType(
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.7,
'text/plain' => 0.5,
'text/*' => 0.2 ),
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.5 ) ) );
$this->assertEquals(
'text/html',
wfNegotiateType(
array( 'text/html' => 1.0,
'text/plain' => 0.5,
'text/*' => 0.5,
'application/xhtml+xml' => 0.2 ),
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.5 ) ) );
$this->assertEquals(
'text/html',
wfNegotiateType(
array( 'text/*' => 1.0,
'image/*' => 0.7,
'*/*' => 0.3 ),
array( 'application/xhtml+xml' => 1.0,
'text/html' => 0.5 ) ) );
$this->assertNull(
wfNegotiateType(
array( 'text/*' => 1.0 ),
array( 'application/xhtml+xml' => 1.0 ) ) );
}
function testTimestamp() {
$t = gmmktime( 12, 34, 56, 1, 15, 2001 );
$this->assertEquals(
'20010115123456',
wfTimestamp( TS_MW, $t ),
'TS_UNIX to TS_MW' );
$this->assertEquals(
979562096,
wfTimestamp( TS_UNIX, $t ),
'TS_UNIX to TS_UNIX' );
$this->assertEquals(
'2001-01-15 12:34:56',
wfTimestamp( TS_DB, $t ),
'TS_UNIX to TS_DB' );
$this->assertEquals(
'20010115123456',
wfTimestamp( TS_MW, '20010115123456' ),
'TS_MW to TS_MW' );
$this->assertEquals(
979562096,
wfTimestamp( TS_UNIX, '20010115123456' ),
'TS_MW to TS_UNIX' );
$this->assertEquals(
'2001-01-15 12:34:56',
wfTimestamp( TS_DB, '20010115123456' ),
'TS_MW to TS_DB' );
$this->assertEquals(
'20010115123456',
wfTimestamp( TS_MW, '2001-01-15 12:34:56' ),
'TS_DB to TS_MW' );
$this->assertEquals(
979562096,
wfTimestamp( TS_UNIX, '2001-01-15 12:34:56' ),
'TS_DB to TS_UNIX' );
$this->assertEquals(
'2001-01-15 12:34:56',
wfTimestamp( TS_DB, '2001-01-15 12:34:56' ),
'TS_DB to TS_DB' );
}
function testBasename() {
$sets = array(
'' => '',
'/' => '',
'\\' => '',
'//' => '',
'\\\\' => '',
'a' => 'a',
'aaaa' => 'aaaa',
'/a' => 'a',
'\\a' => 'a',
'/aaaa' => 'aaaa',
'\\aaaa' => 'aaaa',
'/aaaa/' => 'aaaa',
'\\aaaa\\' => 'aaaa',
'\\aaaa\\' => 'aaaa',
'/mnt/upload3/wikipedia/en/thumb/8/8b/Zork_Grand_Inquisitor_box_cover.jpg/93px-Zork_Grand_Inquisitor_box_cover.jpg' => '93px-Zork_Grand_Inquisitor_box_cover.jpg',
'C:\\Progra~1\\Wikime~1\\Wikipe~1\\VIEWER.EXE' => 'VIEWER.EXE',
'Östergötland_coat_of_arms.png' => 'Östergötland_coat_of_arms.png',
);
foreach( $sets as $from => $to ) {
$this->assertEquals( $to, wfBaseName( $from ),
"wfBaseName('$from') => '$to'");
}
}
/* TODO: many more! */
}
?>