aboutsummaryrefslogtreecommitdiffstats
path: root/tests/phpunit/unit/includes/utils/ClassCollectorTest.php
diff options
context:
space:
mode:
authorAmir Sarabadani <Ladsgroup@gmail.com>2019-07-08 01:28:25 +0200
committerAmir Sarabadani <Ladsgroup@gmail.com>2019-07-09 22:06:59 +0200
commit57261a926cbfa729cb0f224773bd94e8e142e8a8 (patch)
treeb1cc49cd560f7d4e7116e78558283974fdfb53b3 /tests/phpunit/unit/includes/utils/ClassCollectorTest.php
parent882b19db2e71a8315781e4a437641106427ff0c7 (diff)
downloadmediawikicore-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.php69
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 );
+ }
+}