4 * @covers ClassCollector
6 class ClassCollectorTest
extends MediaWikiUnitTestCase
{
8 public static function provideCases() {
15 "namespace Example;\nclass Foo {}\nclass Bar {}",
16 [ 'Example\Foo', 'Example\Bar' ],
19 "class_alias( 'Foo', 'Bar' );",
23 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Foo' );",
24 [ 'Example\Foo', 'Foo' ],
27 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Bar' );",
28 [ 'Example\Foo', 'Bar' ],
31 // Support a multiline 'class' statement
32 "namespace Example;\nclass Foo extends\n\tFooBase {\n\t"
33 . "public function x() {}\n}\nclass_alias( 'Example\Foo', 'Bar' );",
34 [ 'Example\Foo', 'Bar' ],
37 "class_alias( Foo::class, 'Bar' );",
41 // Support nested class_alias() calls
42 "if ( false ) {\n\tclass_alias( Foo::class, 'Bar' );\n}",
46 // Namespaced class is not currently supported. Must use namespace declaration
47 // earlier in the file.
48 "class_alias( Example\Foo::class, 'Bar' );",
52 "namespace Example;\nclass Foo {}\nclass_alias( Foo::class, 'Bar' );",
53 [ 'Example\Foo', 'Bar' ],
56 "new class() extends Foo {}",
63 * @dataProvider provideCases
65 public function testGetClasses( $code, array $classes, $message = null ) {
66 $cc = new ClassCollector();
67 $this->assertEquals( $classes, $cc->getClasses( "<?php\n$code" ), $message );