Classes.php
<?php
namespace Tlf\Lexer\Test\Directives;
trait Classes {
protected $_class_tests = [
'Class.InNamespace'=>[
'ast.type'=>'file',
'start'=>['php_code'],
'input'=>"namespace Abc; class Def {}",
'expect'=>[
'namespace'=>[
'type'=>'namespace',
'name'=>'Abc',
'declaration'=>'namespace Abc;',
'class'=>[
0=>[
'type'=>'class',
'namespace'=>'Abc',
'fqn'=>'Abc\\Def',
'name'=>'Def',
'declaration'=>'class Def',
],
],
],
]
],
'Class.Final.EmptyBody'=>[
'ast.type'=>'file',
'start'=>['php_code'],
'input'=>"final class Abc {\n\n}",
'expect'=>[
'namespace'=>'',
'class'=>[
0=>[
'type'=>'class',
'modifiers'=>['final'],
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'declaration'=>'final class Abc',
],
],
]
],
'Class.Implements'=>[
'is_bad_test'=>"We don't yet catch what interfaces a class implements. We just shove it in the declaration",
'ast.type'=>'namespace',
'start'=>['php_code'],
'input'=>'class Abc extends \Def\Ghi implements iAbc, iDef {',
'expect'=>[
'class'=>[
0=>[
'type'=>'class',
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'extends'=>'\Def\Ghi',
'declaration'=> 'class Abc extends \Def\Ghi implements iAbc, iDef',
],
],
],
],
'Class.Extends'=>[
'ast.type'=>'namespace',
'start'=>['php_code'],
'input'=>'class Abc extends \Def\Ghi {',
'expect'=>[
'class'=>[
0=>[
'type'=>'class',
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'extends'=>'\Def\Ghi',
'declaration'=> 'class Abc extends \Def\Ghi',
],
],
],
],
'Class.Abstract'=>[
'ast.type'=>'namespace',
'start'=>['php_code'],
'input'=>'abstract class Abc {',
'expect'=>[
'class'=>[
0=>[
'type'=>'class',
'modifiers'=>['abstract'],
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'declaration'=> 'abstract class Abc',
],
],
],
],
'Class.OpenInFile'=>[
'ast.type'=>'file',
'start'=>['php_code'],
'input'=>'class Abc {',
'expect'=>[
'namespace'=>'',
'class'=>[
0=>[
'type'=>'class',
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'declaration'=> 'class Abc',
],
]
],
],
'Class.OpenInNamespace'=>[
'ast.type'=>'namespace',
'start'=>['php_code'],
'input'=>'class Abc {',
'expect'=>[
'class'=>[
0=>[
'type'=>'class',
'fqn'=>'Abc',
'namespace'=>'',
'name'=>'Abc',
'declaration'=> 'class Abc',
],
],
],
],
];
}