@@ -20,6 +20,33 @@ class FindExtendedClassNameTest extends AbstractMethodUnitTest
2020{
2121
2222
23+ /**
24+ * Test getting a `false` result when a non-existent token is passed.
25+ *
26+ * @return void
27+ */
28+ public function testNonExistentToken ()
29+ {
30+ $ result = self ::$ phpcsFile ->findExtendedClassName (100000 );
31+ $ this ->assertFalse ($ result );
32+
33+ }//end testNonExistentToken()
34+
35+
36+ /**
37+ * Test getting a `false` result when a token other than one of the supported tokens is passed.
38+ *
39+ * @return void
40+ */
41+ public function testNotAClass ()
42+ {
43+ $ token = $ this ->getTargetToken ('/* testNotAClass */ ' , [T_FUNCTION ]);
44+ $ result = self ::$ phpcsFile ->findExtendedClassName ($ token );
45+ $ this ->assertFalse ($ result );
46+
47+ }//end testNotAClass()
48+
49+
2350 /**
2451 * Test retrieving the name of the class being extended by another class
2552 * (or interface).
@@ -50,6 +77,10 @@ public function testFindExtendedClassName($identifier, $expected)
5077 public function dataExtendedClass ()
5178 {
5279 return [
80+ 'class does not extend ' => [
81+ 'identifier ' => '/* testNonExtendedClass */ ' ,
82+ 'expected ' => false ,
83+ ],
5384 'class extends unqualified class ' => [
5485 'identifier ' => '/* testExtendsUnqualifiedClass */ ' ,
5586 'expected ' => 'testFECNClass ' ,
@@ -58,9 +89,9 @@ public function dataExtendedClass()
5889 'identifier ' => '/* testExtendsFullyQualifiedClass */ ' ,
5990 'expected ' => '\PHP_CodeSniffer\Tests\Core\File\testFECNClass ' ,
6091 ],
61- 'class does not extend ' => [
62- 'identifier ' => '/* testNonExtendedClass */ ' ,
63- 'expected ' => false ,
92+ 'class extends partially qualified class ' => [
93+ 'identifier ' => '/* testExtendsPartiallyQualifiedClass */ ' ,
94+ 'expected ' => ' Core\File\RelativeClass ' ,
6495 ],
6596 'interface does not extend ' => [
6697 'identifier ' => '/* testNonExtendedInterface */ ' ,
@@ -74,6 +105,10 @@ public function dataExtendedClass()
74105 'identifier ' => '/* testInterfaceExtendsFullyQualifiedInterface */ ' ,
75106 'expected ' => '\PHP_CodeSniffer\Tests\Core\File\testFECNInterface ' ,
76107 ],
108+ 'anon class extends unqualified class ' => [
109+ 'identifier ' => '/* testExtendedAnonClass */ ' ,
110+ 'expected ' => 'testFECNExtendedAnonClass ' ,
111+ ],
77112 'class does not extend but contains anon class which extends ' => [
78113 'identifier ' => '/* testNestedExtendedClass */ ' ,
79114 'expected ' => false ,
@@ -90,6 +125,18 @@ public function dataExtendedClass()
90125 'identifier ' => '/* testClassThatImplementsAndExtends */ ' ,
91126 'expected ' => 'testFECNClass ' ,
92127 ],
128+ 'interface extends multiple interfaces (not supported) ' => [
129+ 'identifier ' => '/* testInterfaceMultiExtends */ ' ,
130+ 'expected ' => '\Package\FooInterface ' ,
131+ ],
132+ 'parse error - extends keyword, but no class name ' => [
133+ 'identifier ' => '/* testMissingExtendsName */ ' ,
134+ 'expected ' => false ,
135+ ],
136+ 'parse error - live coding - no curly braces ' => [
137+ 'identifier ' => '/* testParseError */ ' ,
138+ 'expected ' => false ,
139+ ],
93140 ];
94141
95142 }//end dataExtendedClass()
0 commit comments