xarxaprod-wp-theme/vendor/squizlabs/php_codesniffer/tests/Core/Tokenizer/ArrayKeywordTest.php

171 lines
6.0 KiB
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/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace PHP_CodeSniffer\Tests\Core\Tokenizer;
use PHP_CodeSniffer\Tests\Core\AbstractMethodUnitTest;
class ArrayKeywordTest extends AbstractMethodUnitTest
{
/**
* 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
* @covers PHP_CodeSniffer\Tokenizers\Tokenizer::createTokenMap
*
* @return void
*/
public function testArrayKeyword($testMarker, $testContent='array')
{
$tokens = self::$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)');
$this->assertArrayHasKey('parenthesis_owner', $tokenArray, 'Parenthesis owner is not set');
$this->assertArrayHasKey('parenthesis_opener', $tokenArray, 'Parenthesis opener is not set');
$this->assertArrayHasKey('parenthesis_closer', $tokenArray, 'Parenthesis closer is not set');
}//end testArrayKeyword()
/**
* Data provider.
*
* @see testArrayKeyword()
*
* @return array
*/
public function dataArrayKeyword()
{
return [
'empty array' => ['/* testEmptyArray */'],
'array with space before parenthesis' => ['/* testArrayWithSpace */'],
'array with comment before parenthesis' => [
'/* testArrayWithComment */',
'Array',
],
'nested: outer array' => ['/* testNestingArray */'],
'nested: inner array' => ['/* testNestedArray */'],
];
}//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
* @covers PHP_CodeSniffer\Tokenizers\Tokenizer::createTokenMap
*
* @return void
*/
public function testArrayType($testMarker, $testContent='array')
{
$tokens = self::$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)');
$this->assertArrayNotHasKey('parenthesis_owner', $tokenArray, 'Parenthesis owner is set');
$this->assertArrayNotHasKey('parenthesis_opener', $tokenArray, 'Parenthesis opener is set');
$this->assertArrayNotHasKey('parenthesis_closer', $tokenArray, 'Parenthesis closer is set');
}//end testArrayType()
/**
* Data provider.
*
* @see testArrayType()
*
* @return array
*/
public function dataArrayType()
{
return [
'closure return type' => [
'/* testClosureReturnType */',
'Array',
],
'function param type' => ['/* testFunctionDeclarationParamType */'],
'function union return type' => ['/* testFunctionDeclarationReturnType */'],
];
}//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
* @covers PHP_CodeSniffer\Tokenizers\Tokenizer::createTokenMap
*
* @return void
*/
public function testNotArrayKeyword($testMarker, $testContent='array')
{
$tokens = self::$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)');
$this->assertArrayNotHasKey('parenthesis_owner', $tokenArray, 'Parenthesis owner is set');
$this->assertArrayNotHasKey('parenthesis_opener', $tokenArray, 'Parenthesis opener is set');
$this->assertArrayNotHasKey('parenthesis_closer', $tokenArray, 'Parenthesis closer is set');
}//end testNotArrayKeyword()
/**
* Data provider.
*
* @see testNotArrayKeyword()
*
* @return array
*/
public function dataNotArrayKeyword()
{
return [
'class-constant-name' => [
'/* testClassConst */',
'ARRAY',
],
'class-method-name' => ['/* testClassMethod */'],
];
}//end dataNotArrayKeyword()
}//end class