PATH:
opt
/
cpanel
/
ea-wappspector
/
vendor
/
squizlabs
/
php_codesniffer
/
tests
/
Core
/
Tokenizers
/
PHP
<?php /** * Tests the backfill for the PHP >= 8.0 nullsafe object operator. * * @author Juliette Reinders Folmer <phpcs_nospam@adviesenzo.nl> * @copyright 2020 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; use PHP_CodeSniffer\Util\Tokens; final class NullsafeObjectOperatorTest extends AbstractTokenizerTestCase { /** * Tokens to search for. * * @var array<int|string> */ protected $find = [ T_NULLSAFE_OBJECT_OPERATOR, T_OBJECT_OPERATOR, T_INLINE_THEN, ]; /** * Test that a normal object operator is still tokenized as such. * * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testObjectOperator() { $tokens = $this->phpcsFile->getTokens(); $operator = $this->getTargetToken('/* testObjectOperator */', $this->find); $this->assertSame(T_OBJECT_OPERATOR, $tokens[$operator]['code'], 'Failed asserting code is object operator'); $this->assertSame('T_OBJECT_OPERATOR', $tokens[$operator]['type'], 'Failed asserting type is object operator'); }//end testObjectOperator() /** * Test that a nullsafe object operator is tokenized as such. * * @param string $testMarker The comment which prefaces the target token in the test file. * * @dataProvider dataNullsafeObjectOperator * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testNullsafeObjectOperator($testMarker) { $tokens = $this->phpcsFile->getTokens(); $operator = $this->getTargetToken($testMarker, $this->find); $this->assertSame(T_NULLSAFE_OBJECT_OPERATOR, $tokens[$operator]['code'], 'Failed asserting code is nullsafe object operator'); $this->assertSame('T_NULLSAFE_OBJECT_OPERATOR', $tokens[$operator]['type'], 'Failed asserting type is nullsafe object operator'); }//end testNullsafeObjectOperator() /** * Data provider. * * @see testNullsafeObjectOperator() * * @return array<string, array<string>> */ public static function dataNullsafeObjectOperator() { return [ 'nullsafe operator' => ['/* testNullsafeObjectOperator */'], 'illegal nullsafe operator (write context)' => ['/* testNullsafeObjectOperatorWriteContext */'], ]; }//end dataNullsafeObjectOperator() /** * Test that a question mark not followed by an object operator is tokenized as T_TERNARY_THEN. * * @param string $testMarker The comment which prefaces the target token in the test file. * @param bool $testObjectOperator Whether to test for the next non-empty token being tokenized * as an object operator. * * @dataProvider dataTernaryThen * @covers PHP_CodeSniffer\Tokenizers\PHP::tokenize * * @return void */ public function testTernaryThen($testMarker, $testObjectOperator=false) { $tokens = $this->phpcsFile->getTokens(); $operator = $this->getTargetToken($testMarker, $this->find); $this->assertSame(T_INLINE_THEN, $tokens[$operator]['code'], 'Failed asserting code is inline then'); $this->assertSame('T_INLINE_THEN', $tokens[$operator]['type'], 'Failed asserting type is inline then'); if ($testObjectOperator === true) { $next = $this->phpcsFile->findNext(Tokens::$emptyTokens, ($operator + 1), null, true); $this->assertSame(T_OBJECT_OPERATOR, $tokens[$next]['code'], 'Failed asserting code is object operator'); $this->assertSame('T_OBJECT_OPERATOR', $tokens[$next]['type'], 'Failed asserting type is object operator'); } }//end testTernaryThen() /** * Data provider. * * @see testTernaryThen() * * @return array<string, array<string, string|bool>> */ public static function dataTernaryThen() { return [ 'ternary then' => [ 'testMarker' => '/* testTernaryThen */', ], 'whitespace between question mark and object operator' => [ 'testMarker' => '/* testParseErrorWhitespaceNotAllowed */', 'testObjectOperator' => true, ], 'comment between question mark and object operator' => [ 'testMarker' => '/* testParseErrorCommentNotAllowed */', 'testObjectOperator' => true, ], 'parse error/live coding' => [ 'testMarker' => '/* testLiveCoding */', ], ]; }//end dataTernaryThen() }//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]