X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=tests%2Fphpunit%2Fincludes%2Flibs%2FXhprofTest.php;h=ccad4a43d6b81800e427800850a44d6a22a3dc54;hb=97015d4ef32a8a0db026e495dcc4f02e7d559069;hp=c9123b88894fcc69a98366b42606ef1701cea7d8;hpb=6f680554ceb988f3895184167d5006d722a0afb3;p=lhc%2Fweb%2Fwiklou.git diff --git a/tests/phpunit/includes/libs/XhprofTest.php b/tests/phpunit/includes/libs/XhprofTest.php index c9123b8889..ccad4a43d6 100644 --- a/tests/phpunit/includes/libs/XhprofTest.php +++ b/tests/phpunit/includes/libs/XhprofTest.php @@ -18,7 +18,7 @@ * @file */ -class XhprofTest extends PHPUnit_Framework_TestCase { +class XhprofTest extends PHPUnit\Framework\TestCase { use MediaWikiCoversValidator; @@ -31,10 +31,83 @@ class XhprofTest extends PHPUnit_Framework_TestCase { * @covers Xhprof::enable */ public function testEnable() { - $xhprof = new ReflectionClass( 'Xhprof' ); + $xhprof = new ReflectionClass( Xhprof::class ); $enabled = $xhprof->getProperty( 'enabled' ); $enabled->setAccessible( true ); $enabled->setValue( true ); $xhprof->getMethod( 'enable' )->invoke( null ); } + + /** + * callAny() calls the first function of the list. + * + * @covers Xhprof::callAny + * @dataProvider provideCallAny + */ + public function testCallAny( array $functions, array $args, $expectedResult ) { + $xhprof = new ReflectionClass( Xhprof::class ); + $callAny = $xhprof->getMethod( 'callAny' ); + $callAny->setAccessible( true ); + + $this->assertEquals( $expectedResult, + $callAny->invoke( null, $functions, $args ) ); + } + + /** + * Data provider for testCallAny(). + */ + public function provideCallAny() { + return [ + [ + [ 'wfTestCallAny_func1', 'wfTestCallAny_func2', 'wfTestCallAny_func3' ], + [ 3, 4 ], + 12 + ], + [ + [ 'wfTestCallAny_nosuchfunc1', 'wfTestCallAny_func2', 'wfTestCallAny_func3' ], + [ 3, 4 ], + 7 + ], + [ + [ 'wfTestCallAny_nosuchfunc1', 'wfTestCallAny_nosuchfunc2', 'wfTestCallAny_func3' ], + [ 3, 4 ], + -1 + ] + + ]; + } + + /** + * callAny() throws an exception when all functions are unavailable. + * + * @expectedException Exception + * @expectedExceptionMessage Neither xhprof nor tideways are installed + * @covers Xhprof::callAny + */ + public function testCallAnyNoneAvailable() { + $xhprof = new ReflectionClass( Xhprof::class ); + $callAny = $xhprof->getMethod( 'callAny' ); + $callAny->setAccessible( true ); + + $callAny->invoke( $xhprof, [ + 'wfTestCallAny_nosuchfunc1', + 'wfTestCallAny_nosuchfunc2', + 'wfTestCallAny_nosuchfunc3' + ] ); + } +} + +/** Test function #1 for XhprofTest::testCallAny */ +function wfTestCallAny_func1( $a, $b ) { + return $a * $b; +} + +/** Test function #2 for XhprofTest::testCallAny */ +function wfTestCallAny_func2( $a, $b ) { + return $a + $b; +} + +/** Test function #3 for XhprofTest::testCallAny */ +function wfTestCallAny_func3( $a, $b ) { + return $a - $b; }