MediaWiki
REL1_19
|
00001 <?php 00002 00003 class MWFunctionTest extends MediaWikiTestCase { 00004 00005 function testCallUserFuncWorkarounds() { 00006 00007 $this->assertEquals( 00008 call_user_func( array( 'MWFunctionTest', 'someMethod' ) ), 00009 MWFunction::call( 'MWFunctionTest::someMethod' ) 00010 ); 00011 $this->assertEquals( 00012 call_user_func( array( 'MWFunctionTest', 'someMethod' ), 'foo', 'bar', 'baz' ), 00013 MWFunction::call( 'MWFunctionTest::someMethod', 'foo', 'bar', 'baz' ) 00014 ); 00015 00016 00017 00018 $this->assertEquals( 00019 call_user_func_array( array( 'MWFunctionTest', 'someMethod' ), array() ), 00020 MWFunction::callArray( 'MWFunctionTest::someMethod', array() ) 00021 ); 00022 $this->assertEquals( 00023 call_user_func_array( array( 'MWFunctionTest', 'someMethod' ), array( 'foo', 'bar', 'baz' ) ), 00024 MWFunction::callArray( 'MWFunctionTest::someMethod', array( 'foo', 'bar', 'baz' ) ) 00025 ); 00026 00027 } 00028 00029 function testNewObjFunction() { 00030 00031 $arg1 = 'Foo'; 00032 $arg2 = 'Bar'; 00033 $arg3 = array( 'Baz' ); 00034 $arg4 = new ExampleObject; 00035 00036 $args = array( $arg1, $arg2, $arg3, $arg4 ); 00037 00038 $newObject = new MWBlankClass( $arg1, $arg2, $arg3, $arg4 ); 00039 00040 $this->assertEquals( 00041 MWFunction::newObj( 'MWBlankClass', $args )->args, 00042 $newObject->args 00043 ); 00044 00045 $this->assertEquals( 00046 MWFunction::newObj( 'MWBlankClass', $args, true )->args, 00047 $newObject->args, 00048 'Works even with PHP version < 5.1.3' 00049 ); 00050 00051 } 00052 00056 function testCallingParentFails() { 00057 00058 MWFunction::call( 'parent::foo' ); 00059 } 00060 00064 function testCallingSelfFails() { 00065 00066 MWFunction::call( 'self::foo' ); 00067 } 00068 00069 public static function someMethod() { 00070 return func_get_args(); 00071 } 00072 00073 } 00074 00075 class MWBlankClass { 00076 00077 public $args = array(); 00078 00079 function __construct( $arg1, $arg2, $arg3, $arg4 ) { 00080 $this->args = array( $arg1, $arg2, $arg3, $arg4 ); 00081 } 00082 00083 } 00084 00085 class ExampleObject { 00086 }