Type hint against LinkTarget in WatchedItemStore
[lhc/web/wiklou.git] / tests / phpunit / includes / utils / ClassCollectorTest.php
1 <?php
2
3 /**
4 * @covers ClassCollector
5 */
6 class ClassCollectorTest extends PHPUnit\Framework\TestCase {
7
8 use MediaWikiCoversValidator;
9
10 public static function provideCases() {
11 return [
12 [
13 "class Foo {}",
14 [ 'Foo' ],
15 ],
16 [
17 "namespace Example;\nclass Foo {}\nclass Bar {}",
18 [ 'Example\Foo', 'Example\Bar' ],
19 ],
20 [
21 "class_alias( 'Foo', 'Bar' );",
22 [ 'Bar' ],
23 ],
24 [
25 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Foo' );",
26 [ 'Example\Foo', 'Foo' ],
27 ],
28 [
29 "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Bar' );",
30 [ 'Example\Foo', 'Bar' ],
31 ],
32 [
33 "class_alias( Foo::class, 'Bar' );",
34 [ 'Bar' ],
35 ],
36 [
37 // Namespaced class is not currently supported. Must use namespace declaration
38 // earlier in the file.
39 "class_alias( Example\Foo::class, 'Bar' );",
40 [],
41 ],
42 [
43 "namespace Example;\nclass Foo {}\nclass_alias( Foo::class, 'Bar' );",
44 [ 'Example\Foo', 'Bar' ],
45 ],
46 [
47 "new class() extends Foo {}",
48 []
49 ]
50 ];
51 }
52
53 /**
54 * @dataProvider provideCases
55 */
56 public function testGetClasses( $code, array $classes, $message = null ) {
57 $cc = new ClassCollector();
58 $this->assertEquals( $classes, $cc->getClasses( "<?php\n$code" ), $message );
59 }
60 }