diff options
author | Amir Sarabadani <Ladsgroup@gmail.com> | 2019-07-08 01:28:25 +0200 |
---|---|---|
committer | Amir Sarabadani <Ladsgroup@gmail.com> | 2019-07-09 22:06:59 +0200 |
commit | 57261a926cbfa729cb0f224773bd94e8e142e8a8 (patch) | |
tree | b1cc49cd560f7d4e7116e78558283974fdfb53b3 /tests/phpunit/unit/includes/utils/ClassCollectorTest.php | |
parent | 882b19db2e71a8315781e4a437641106427ff0c7 (diff) | |
download | mediawikicore-57261a926cbfa729cb0f224773bd94e8e142e8a8.tar.gz mediawikicore-57261a926cbfa729cb0f224773bd94e8e142e8a8.zip |
Move unit tests, round III
Depends-On: I16691fc8ac063705ba0c2bc63b96c4534ca8660b
Bug: T87781
Change-Id: I5e1ab06e3decef6cc6090551d54dc4314ab9314a
Diffstat (limited to 'tests/phpunit/unit/includes/utils/ClassCollectorTest.php')
-rw-r--r-- | tests/phpunit/unit/includes/utils/ClassCollectorTest.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests/phpunit/unit/includes/utils/ClassCollectorTest.php b/tests/phpunit/unit/includes/utils/ClassCollectorTest.php new file mode 100644 index 000000000000..6ce5e9d039a2 --- /dev/null +++ b/tests/phpunit/unit/includes/utils/ClassCollectorTest.php @@ -0,0 +1,69 @@ +<?php + +/** + * @covers ClassCollector + */ +class ClassCollectorTest extends MediaWikiUnitTestCase { + + 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' ], + ], + [ + // Support a multiline 'class' statement + "namespace Example;\nclass Foo extends\n\tFooBase {\n\t" + . "public function x() {}\n}\nclass_alias( 'Example\Foo', 'Bar' );", + [ 'Example\Foo', 'Bar' ], + ], + [ + "class_alias( Foo::class, 'Bar' );", + [ 'Bar' ], + ], + [ + // Support nested class_alias() calls + "if ( false ) {\n\tclass_alias( Foo::class, 'Bar' );\n}", + [ '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' ], + ], + [ + "new class() extends Foo {}", + [] + ] + ]; + } + + /** + * @dataProvider provideCases + */ + public function testGetClasses( $code, array $classes, $message = null ) { + $cc = new ClassCollector(); + $this->assertEquals( $classes, $cc->getClasses( "<?php\n$code" ), $message ); + } +} |