REDROOM
PHP 8.2.31
Path:
Logout
Edit File
Size: 5.26 KB
Close
/opt/cpanel/ea-wappspector/vendor/rector/rector/vendor/rector/rector-phpunit/src/NodeFactory/ConsecutiveIfsFactory.php
Text
Base64
<?php declare (strict_types=1); namespace Rector\PHPUnit\NodeFactory; use PhpParser\Node\Arg; use PhpParser\Node\Expr\Array_; use PhpParser\Node\Expr\ArrayDimFetch; use PhpParser\Node\Expr\ArrayItem; use PhpParser\Node\Expr\ArrowFunction; use PhpParser\Node\Expr\BinaryOp\Identical; use PhpParser\Node\Expr\MethodCall; use PhpParser\Node\Expr\Variable; use PhpParser\Node\Identifier; use PhpParser\Node\Scalar\LNumber; use PhpParser\Node\Stmt; use PhpParser\Node\Stmt\Expression; use PhpParser\Node\Stmt\If_; use Rector\Exception\NotImplementedYetException; use Rector\NodeNameResolver\NodeNameResolver; use Rector\PHPUnit\CodeQuality\NodeFactory\NestedClosureAssertFactory; use Rector\PHPUnit\Enum\ConsecutiveVariable; final class ConsecutiveIfsFactory { /** * @readonly * @var \Rector\NodeNameResolver\NodeNameResolver */ private $nodeNameResolver; /** * @readonly * @var \Rector\PHPUnit\CodeQuality\NodeFactory\NestedClosureAssertFactory */ private $nestedClosureAssertFactory; public function __construct(NodeNameResolver $nodeNameResolver, NestedClosureAssertFactory $nestedClosureAssertFactory) { $this->nodeNameResolver = $nodeNameResolver; $this->nestedClosureAssertFactory = $nestedClosureAssertFactory; } /** * @return Stmt[] */ public function createIfs(MethodCall $withConsecutiveMethodCall, MethodCall $numberOfInvocationsMethodCall) : array { $ifs = []; $parametersVariable = new Variable(ConsecutiveVariable::PARAMETERS); foreach ($withConsecutiveMethodCall->getArgs() as $key => $withConsecutiveArg) { $ifStmts = []; if ($withConsecutiveArg->value instanceof Array_) { $array = $withConsecutiveArg->value; foreach ($array->items as $assertKey => $assertArrayItem) { if (!$assertArrayItem instanceof ArrayItem) { continue; } if (!$assertArrayItem->value instanceof MethodCall) { $parametersDimFetch = new ArrayDimFetch(new Variable('parameters'), new LNumber($assertKey)); $args = [new Arg($assertArrayItem), new Arg($parametersDimFetch)]; $ifStmts[] = new Expression(new MethodCall(new Variable('this'), 'assertSame', $args)); continue; } $assertMethodCall = $assertArrayItem->value; if ($this->nodeNameResolver->isName($assertMethodCall->name, 'equalTo')) { $ifStmts[] = $this->createAssertMethodCall($assertMethodCall, $parametersVariable, $assertKey); } elseif ($this->nodeNameResolver->isName($assertMethodCall->name, 'callback')) { $ifStmts = \array_merge($ifStmts, $this->nestedClosureAssertFactory->create($assertMethodCall, $assertKey)); } else { $args = [new Arg($assertMethodCall), new Arg(new ArrayDimFetch(new Variable('parameters'), new LNumber($assertKey)))]; $assertSameMethodCall = new MethodCall(new Variable('this'), new Identifier('assertSame'), $args); $ifStmts[] = new Expression($assertSameMethodCall); } } } elseif ($withConsecutiveArg->value instanceof MethodCall) { $methodCall = $withConsecutiveArg->value; if ($this->nodeNameResolver->isName($methodCall->name, 'callback')) { // special callable case $firstArg = $methodCall->getArgs()[0]; if ($firstArg->value instanceof ArrowFunction) { $arrowFunction = $firstArg->value; if ($arrowFunction->expr instanceof Identical) { $identicalCompare = $arrowFunction->expr; // @todo improve in time if ($identicalCompare->left instanceof Variable) { $parametersArrayDimFetch = new ArrayDimFetch(new Variable('parameters'), new LNumber(0)); $assertSameMethodCall = new MethodCall(new Variable('this'), new Identifier('assertSame')); $assertSameMethodCall->args[] = new Arg($identicalCompare->right); $assertSameMethodCall->args[] = new Arg($parametersArrayDimFetch); return [new Expression($assertSameMethodCall)]; } } } } throw new NotImplementedYetException(); } $ifs[] = new If_(new Identical($numberOfInvocationsMethodCall, new LNumber($key + 1)), ['stmts' => $ifStmts]); } return $ifs; } private function createAssertMethodCall(MethodCall $assertMethodCall, Variable $parametersVariable, int $parameterPositionKey) : Expression { $assertMethodCall->name = new Identifier('assertEquals'); $parametersArrayDimFetch = new ArrayDimFetch($parametersVariable, new LNumber($parameterPositionKey)); $assertMethodCall->args[] = new Arg($parametersArrayDimFetch); return new Expression($assertMethodCall); } }
Save
Close
Exit & Reset
Text mode: syntax highlighting auto-detects file type.
Directory Contents
Dirs: 0 × Files: 5
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
AssertCallFactory.php
588 B
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ConsecutiveIfsFactory.php
5.26 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ExpectExceptionMethodCallFactory.php
2.20 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
MatcherInvocationCountMethodCallNodeFactory.php
1.35 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
UsedVariablesResolver.php
1.95 KB
lrw-r--r--
2024-11-08 13:59:10
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).