diff options
Diffstat (limited to 'www/wiki/tests/phpunit/includes/utils/ClassCollectorTest.php')
-rw-r--r-- | www/wiki/tests/phpunit/includes/utils/ClassCollectorTest.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/www/wiki/tests/phpunit/includes/utils/ClassCollectorTest.php b/www/wiki/tests/phpunit/includes/utils/ClassCollectorTest.php new file mode 100644 index 00000000..9e5163f9 --- /dev/null +++ b/www/wiki/tests/phpunit/includes/utils/ClassCollectorTest.php @@ -0,0 +1,56 @@ +<?php + +/** + * @covers ClassCollector + */ +class ClassCollectorTest extends PHPUnit\Framework\TestCase { + + use MediaWikiCoversValidator; + + public static function provideCases() { + return [ + [ + "class Foo {}", + [ 'Foo' ], + ], + [ + "namespace Example;\nclass Foo {}\nclass Bar {}", + [ 'Example\Foo', 'Example\Bar' ], + ], + [ + "class_alias( 'Foo', 'Bar' );", + [ 'Bar' ], + ], + [ + "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Foo' );", + [ 'Example\Foo', 'Foo' ], + ], + [ + "namespace Example;\nclass Foo {}\nclass_alias( 'Example\Foo', 'Bar' );", + [ 'Example\Foo', 'Bar' ], + ], + [ + "class_alias( Foo::class, 'Bar' );", + [ 'Bar' ], + ], + [ + // Namespaced class is not currently supported. Must use namespace declaration + // earlier in the file. + "class_alias( Example\Foo::class, 'Bar' );", + [], + ], + [ + "namespace Example;\nclass Foo {}\nclass_alias( Foo::class, 'Bar' );", + [ 'Example\Foo', 'Bar' ], + ], + ]; + } + + /** + * @dataProvider provideCases + */ + public function testGetClasses( $code, array $classes, $message = null ) { + $cc = new ClassCollector(); + $this->assertEquals( $classes, $cc->getClasses( "<?php\n$code" ), $message ); + } +} |