PATH:
opt
/
cpanel
/
ea-wappspector
/
vendor
/
squizlabs
/
php_codesniffer
/
tests
/
Core
/
Tokenizers
/
PHP
<?php /** * Tests that the array keyword is tokenized correctly. * * @author Juliette Reinders Folmer <phpcs_nospam@adviesenzo.nl> * @copyright 2021 Squiz Pty Ltd (ABN 77 084 670 600) * @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence */ namespace PHP_CodeSniffer\Tests\Core\Tokenizers\PHP; use PHP_CodeSniffer\Tests\Core\Tokenizers\AbstractTokenizerTestCase; final class ArrayKeywordTest extends AbstractTokenizerTestCase { /** * Test that the array keyword is correctly tokenized as `T_ARRAY`. * * @param string $testMarker The comment prefacing the target token. * @param string $testContent Optional. The token content to look for. * * @dataProvider dataArrayKeyword * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testArrayKeyword($testMarker, $testContent='array') { $tokens = $this->phpcsFile->getTokens(); $token = $this->getTargetToken($testMarker, [T_ARRAY, T_STRING], $testContent); $tokenArray = $tokens[$token]; $this->assertSame(T_ARRAY, $tokenArray['code'], 'Token tokenized as '.$tokenArray['type'].', not T_ARRAY (code)'); $this->assertSame('T_ARRAY', $tokenArray['type'], 'Token tokenized as '.$tokenArray['type'].', not T_ARRAY (type)'); }//end testArrayKeyword() /** * Data provider. * * @see testArrayKeyword() * * @return array<string, array<string, string>> */ public static function dataArrayKeyword() { return [ 'empty array' => [ 'testMarker' => '/* testEmptyArray */', ], 'array with space before parenthesis' => [ 'testMarker' => '/* testArrayWithSpace */', ], 'array with comment before parenthesis' => [ 'testMarker' => '/* testArrayWithComment */', 'testContent' => 'Array', ], 'nested: outer array' => [ 'testMarker' => '/* testNestingArray */', ], 'nested: inner array' => [ 'testMarker' => '/* testNestedArray */', ], 'OO constant default value' => [ 'testMarker' => '/* testOOConstDefault */', ], ]; }//end dataArrayKeyword() /** * Test that the array keyword when used in a type declaration is correctly tokenized as `T_STRING`. * * @param string $testMarker The comment prefacing the target token. * @param string $testContent Optional. The token content to look for. * * @dataProvider dataArrayType * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testArrayType($testMarker, $testContent='array') { $tokens = $this->phpcsFile->getTokens(); $token = $this->getTargetToken($testMarker, [T_ARRAY, T_STRING], $testContent); $tokenArray = $tokens[$token]; $this->assertSame(T_STRING, $tokenArray['code'], 'Token tokenized as '.$tokenArray['type'].', not T_STRING (code)'); $this->assertSame('T_STRING', $tokenArray['type'], 'Token tokenized as '.$tokenArray['type'].', not T_STRING (type)'); }//end testArrayType() /** * Data provider. * * @see testArrayType() * * @return array<string, array<string, string>> */ public static function dataArrayType() { return [ 'closure return type' => [ 'testMarker' => '/* testClosureReturnType */', 'testContent' => 'Array', ], 'function param type' => [ 'testMarker' => '/* testFunctionDeclarationParamType */', ], 'function union return type' => [ 'testMarker' => '/* testFunctionDeclarationReturnType */', ], 'OO constant type' => [ 'testMarker' => '/* testOOConstType */', ], 'OO property type' => [ 'testMarker' => '/* testOOPropertyType */', ], 'OO constant DNF type' => [ 'testMarker' => '/* testOOConstDNFType */', ], 'OO property DNF type' => [ 'testMarker' => '/* testOOPropertyDNFType */', 'testContent' => 'ARRAY', ], 'function param DNF type' => [ 'testMarker' => '/* testFunctionDeclarationParamDNFType */', ], 'closure param DNF type' => [ 'testMarker' => '/* testClosureDeclarationParamDNFType */', ], 'arrow return DNF type' => [ 'testMarker' => '/* testArrowDeclarationReturnDNFType */', 'testContent' => 'Array', ], ]; }//end dataArrayType() /** * Verify that the retokenization of `T_ARRAY` tokens to `T_STRING` is handled correctly * for tokens with the contents 'array' which aren't in actual fact the array keyword. * * @param string $testMarker The comment prefacing the target token. * @param string $testContent The token content to look for. * * @dataProvider dataNotArrayKeyword * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testNotArrayKeyword($testMarker, $testContent='array') { $tokens = $this->phpcsFile->getTokens(); $token = $this->getTargetToken($testMarker, [T_ARRAY, T_STRING], $testContent); $tokenArray = $tokens[$token]; $this->assertSame(T_STRING, $tokenArray['code'], 'Token tokenized as '.$tokenArray['type'].', not T_STRING (code)'); $this->assertSame('T_STRING', $tokenArray['type'], 'Token tokenized as '.$tokenArray['type'].', not T_STRING (type)'); }//end testNotArrayKeyword() /** * Data provider. * * @see testNotArrayKeyword() * * @return array<string, array<string, string>> */ public static function dataNotArrayKeyword() { return [ 'class-constant-name' => [ 'testMarker' => '/* testClassConst */', 'testContent' => 'ARRAY', ], 'class-method-name' => [ 'testMarker' => '/* testClassMethod */', ], 'class-constant-name-after-type' => [ 'testMarker' => '/* testTypedOOConstName */', 'testContent' => 'ARRAY', ], ]; }//end dataNotArrayKeyword() }//end class
[-] BackfillExplicitOctalNotationTest.php
[edit]
[-] PHPOpenTagEOF2Test.inc
[edit]
[-] BackfillEnumTest.inc
[edit]
[-] PHPOpenTagEOF1Test.php
[edit]
[-] BackfillAsymmetricVisibilityTest.php
[edit]
[-] EnumCaseTest.php
[edit]
[-] StableCommentWhitespaceTest.inc
[edit]
[-] HeredocNowdocTest.inc
[edit]
[-] TypeIntersectionTest.php
[edit]
[-] DNFTypesParseError2Test.php
[edit]
[-] TypeIntersectionTest.inc
[edit]
[-] NamedFunctionCallArgumentsTest.inc
[edit]
[-] TypedConstantsTest.inc
[edit]
[-] UndoNamespacedNameSingleTokenTest.php
[edit]
[-] BackfillFnTokenParseErrorTest.inc
[edit]
[+]
..
[-] StableCommentWhitespaceWinTest.php
[edit]
[-] DNFTypesTest.inc
[edit]
[-] DNFTypesParseError1Test.inc
[edit]
[-] BitwiseOrTest.php
[edit]
[-] BackfillFnTokenParseErrorTest.php
[edit]
[-] DoubleQuotedStringTest.php
[edit]
[-] BackfillReadonlyTest.inc
[edit]
[-] PHPOpenTagEOF1Test.inc
[edit]
[-] PHPOpenTagEOF2Test.php
[edit]
[-] BackfillNumericSeparatorTest.inc
[edit]
[-] ArrayKeywordTest.inc
[edit]
[-] BackfillMatchTokenTest.php
[edit]
[-] DoubleArrowTest.inc
[edit]
[-] HeredocStringTest.inc
[edit]
[-] GotoLabelTest.inc
[edit]
[-] OtherContextSensitiveKeywordsTest.php
[edit]
[-] StableCommentWhitespaceTest.php
[edit]
[-] NullsafeObjectOperatorTest.php
[edit]
[-] DNFTypesParseError1Test.php
[edit]
[-] AttributesTest.php
[edit]
[-] ExitKeywordTest.inc
[edit]
[-] HeredocParseErrorTest.php
[edit]
[-] AnonClassParenthesisOwnerTest.php
[edit]
[-] NullableVsInlineThenTest.inc
[edit]
[-] ArrayKeywordTest.php
[edit]
[-] NullsafeObjectOperatorTest.inc
[edit]
[-] BackfillExplicitOctalNotationTest.inc
[edit]
[-] ResolveSimpleTokenTest.inc
[edit]
[-] DNFTypesParseError2Test.inc
[edit]
[-] BackfillEnumTest.php
[edit]
[-] YieldTest.inc
[edit]
[-] BackfillReadonlyTest.php
[edit]
[-] HeredocNowdocTest.php
[edit]
[-] ShortArrayTest.inc
[edit]
[-] DefaultKeywordTest.php
[edit]
[-] StableCommentWhitespaceWinTest.inc
[edit]
[-] BitwiseOrTest.inc
[edit]
[-] DNFTypesTest.php
[edit]
[-] DoubleArrowTest.php
[edit]
[-] EnumCaseTest.inc
[edit]
[-] TypedConstantsTest.php
[edit]
[-] BackfillNumericSeparatorTest.php
[edit]
[-] BackfillFnTokenTest.php
[edit]
[-] FinallyTest.inc
[edit]
[-] HeredocStringTest.php
[edit]
[-] ShortArrayTest.php
[edit]
[-] BackfillMatchTokenTest.inc
[edit]
[-] NullableVsInlineThenTest.php
[edit]
[-] DoubleQuotedStringTest.inc
[edit]
[-] GotoLabelTest.php
[edit]
[-] ExitKeywordTest.php
[edit]
[-] HeredocParseErrorTest.inc
[edit]
[-] ResolveSimpleTokenTest.php
[edit]
[-] UndoNamespacedNameSingleTokenTest.inc
[edit]
[-] OtherContextSensitiveKeywordsTest.inc
[edit]
[-] NamedFunctionCallArgumentsTest.php
[edit]
[-] AnonClassParenthesisOwnerTest.inc
[edit]
[-] PHPOpenTagEOF3Test.inc
[edit]
[-] BackfillFnTokenTest.inc
[edit]
[-] BackfillAsymmetricVisibilityTest.inc
[edit]
[-] AttributesTest.inc
[edit]
[-] ContextSensitiveKeywordsTest.inc
[edit]
[-] FinallyTest.php
[edit]
[-] PHPOpenTagEOF3Test.php
[edit]
[-] YieldTest.php
[edit]
[-] DefaultKeywordTest.inc
[edit]
[-] ContextSensitiveKeywordsTest.php
[edit]