4 * @covers ClassCollector
6 class ClassCollectorTest
extends PHPUnit\Framework\TestCase
{
8 use MediaWikiCoversValidator
;
10 public static function provideCases() {
17 "namespace Example;\nclass Foo {}\nclass Bar {}",
18 [ 'Example\Foo', 'Example\Bar' ],
21 "class_alias( 'Foo', 'Bar' );",
25 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Foo' );",
26 [ 'Example\Foo', 'Foo' ],
29 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Bar' );",
30 [ 'Example\Foo', 'Bar' ],
33 // Support a multiline 'class' statement
34 "namespace Example;\nclass Foo extends\n\tFooBase {\n\t"
35 . "public function x() {}\n}\nclass_alias( 'Example\Foo', 'Bar' );",
36 [ 'Example\Foo', 'Bar' ],
39 "class_alias( Foo::class, 'Bar' );",
43 // Support nested class_alias() calls
44 "if ( false ) {\n\tclass_alias( Foo::class, 'Bar' );\n}",
48 // Namespaced class is not currently supported. Must use namespace declaration
49 // earlier in the file.
50 "class_alias( Example\Foo::class, 'Bar' );",
54 "namespace Example;\nclass Foo {}\nclass_alias( Foo::class, 'Bar' );",
55 [ 'Example\Foo', 'Bar' ],
58 "new class() extends Foo {}",
65 * @dataProvider provideCases
67 public function testGetClasses( $code, array $classes, $message = null ) {
68 $cc = new ClassCollector();
69 $this->assertEquals( $classes, $cc->getClasses( "<?php\n$code" ), $message );