Make sure wfProfileIn is available for testing, in case some silly function uses it
[lhc/web/wiklou.git] / tests / GlobalTest.php
index 65f84e8..9cb398d 100644 (file)
@@ -2,6 +2,7 @@
 
 require_once( 'PHPUnit.php' );
 require_once( '../includes/Defines.php' );
+require_once( '../includes/Profiling.php' );
 require_once( '../includes/GlobalFunctions.php' );
 
 class GlobalTest extends PHPUnit_TestCase {
@@ -121,6 +122,111 @@ class GlobalTest extends PHPUnit_TestCase {
                                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' );
+       }
+       
        /* TODO: many more! */
 }