!C99Shell v. 2.0 [PHP 7 Update] [25.02.2019]!

Software: Apache/2.2.22 (Debian). PHP/5.6.36 

uname -a: Linux h05.hvosting.ua 4.9.110-amd64 #3 SMP Sun Nov 4 16:27:09 UTC 2018 x86_64 

uid=1389(h33678) gid=1099(h33678) groups=1099(h33678),502(mgrsecure) 

Safe-mode: OFF (not secure)

/home/h33678/data/www/it-man.ztu.edu.ua/src/vendor/nikic/php-parser/test/PhpParser/   drwxr-xr-x
Free 116.83 GB of 200.55 GB (58.26%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     NodeTraverserTest.php (8.79 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace PhpParser;

use 
PhpParser\Node\Scalar\String_;
use 
PhpParser\Node\Expr;

class 
NodeTraverserTest extends \PHPUnit_Framework_TestCase
{
    public function 
testNonModifying() {
        
$str1Node = new String_('Foo');
        
$str2Node = new String_('Bar');
        
$echoNode = new Node\Stmt\Echo_(array($str1Node$str2Node));
        
$stmts    = array($echoNode);

        
$visitor $this->getMock('PhpParser\NodeVisitor');

        
$visitor->expects($this->at(0))->method('beforeTraverse')->with($stmts);
        
$visitor->expects($this->at(1))->method('enterNode')->with($echoNode);
        
$visitor->expects($this->at(2))->method('enterNode')->with($str1Node);
        
$visitor->expects($this->at(3))->method('leaveNode')->with($str1Node);
        
$visitor->expects($this->at(4))->method('enterNode')->with($str2Node);
        
$visitor->expects($this->at(5))->method('leaveNode')->with($str2Node);
        
$visitor->expects($this->at(6))->method('leaveNode')->with($echoNode);
        
$visitor->expects($this->at(7))->method('afterTraverse')->with($stmts);

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor);

        
$this->assertEquals($stmts$traverser->traverse($stmts));
    }

    public function 
testModifying() {
        
$str1Node  = new String_('Foo');
        
$str2Node  = new String_('Bar');
        
$printNode = new Expr\Print_($str1Node);

        
// first visitor changes the node, second verifies the change
        
$visitor1 $this->getMock('PhpParser\NodeVisitor');
        
$visitor2 $this->getMock('PhpParser\NodeVisitor');

        
// replace empty statements with string1 node
        
$visitor1->expects($this->at(0))->method('beforeTraverse')->with(array())
                 ->
will($this->returnValue(array($str1Node)));
        
$visitor2->expects($this->at(0))->method('beforeTraverse')->with(array($str1Node));

        
// replace string1 node with print node
        
$visitor1->expects($this->at(1))->method('enterNode')->with($str1Node)
                 ->
will($this->returnValue($printNode));
        
$visitor2->expects($this->at(1))->method('enterNode')->with($printNode);

        
// replace string1 node with string2 node
        
$visitor1->expects($this->at(2))->method('enterNode')->with($str1Node)
                 ->
will($this->returnValue($str2Node));
        
$visitor2->expects($this->at(2))->method('enterNode')->with($str2Node);

        
// replace string2 node with string1 node again
        
$visitor1->expects($this->at(3))->method('leaveNode')->with($str2Node)
                 ->
will($this->returnValue($str1Node));
        
$visitor2->expects($this->at(3))->method('leaveNode')->with($str1Node);

        
// replace print node with string1 node again
        
$visitor1->expects($this->at(4))->method('leaveNode')->with($printNode)
                 ->
will($this->returnValue($str1Node));
        
$visitor2->expects($this->at(4))->method('leaveNode')->with($str1Node);

        
// replace string1 node with empty statements again
        
$visitor1->expects($this->at(5))->method('afterTraverse')->with(array($str1Node))
                 ->
will($this->returnValue(array()));
        
$visitor2->expects($this->at(5))->method('afterTraverse')->with(array());

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor1);
        
$traverser->addVisitor($visitor2);

        
// as all operations are reversed we end where we start
        
$this->assertEquals(array(), $traverser->traverse(array()));
    }

    public function 
testRemove() {
        
$str1Node = new String_('Foo');
        
$str2Node = new String_('Bar');

        
$visitor $this->getMock('PhpParser\NodeVisitor');

        
// remove the string1 node, leave the string2 node
        
$visitor->expects($this->at(2))->method('leaveNode')->with($str1Node)
                ->
will($this->returnValue(false));

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor);

        
$this->assertEquals(array($str2Node), $traverser->traverse(array($str1Node$str2Node)));
    }

    public function 
testMerge() {
        
$strStart  = new String_('Start');
        
$strMiddle = new String_('End');
        
$strEnd    = new String_('Middle');
        
$strR1     = new String_('Replacement 1');
        
$strR2     = new String_('Replacement 2');

        
$visitor $this->getMock('PhpParser\NodeVisitor');

        
// replace strMiddle with strR1 and strR2 by merge
        
$visitor->expects($this->at(4))->method('leaveNode')->with($strMiddle)
                ->
will($this->returnValue(array($strR1$strR2)));

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor);

        
$this->assertEquals(
            array(
$strStart$strR1$strR2$strEnd),
            
$traverser->traverse(array($strStart$strMiddle$strEnd))
        );
    }

    public function 
testDeepArray() {
        
$strNode = new String_('Foo');
        
$stmts = array(array(array($strNode)));

        
$visitor $this->getMock('PhpParser\NodeVisitor');
        
$visitor->expects($this->at(1))->method('enterNode')->with($strNode);

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor);

        
$this->assertEquals($stmts$traverser->traverse($stmts));
    }

    public function 
testDontTraverseChildren() {
        
$strNode = new String_('str');
        
$printNode = new Expr\Print_($strNode);
        
$varNode = new Expr\Variable('foo');
        
$mulNode = new Expr\BinaryOp\Mul($varNode$varNode);
        
$negNode = new Expr\UnaryMinus($mulNode);
        
$stmts = array($printNode$negNode);

        
$visitor1 $this->getMock('PhpParser\NodeVisitor');
        
$visitor2 $this->getMock('PhpParser\NodeVisitor');

        
$visitor1->expects($this->at(1))->method('enterNode')->with($printNode)
            ->
will($this->returnValue(NodeTraverser::DONT_TRAVERSE_CHILDREN));
        
$visitor2->expects($this->at(1))->method('enterNode')->with($printNode);

        
$visitor1->expects($this->at(2))->method('leaveNode')->with($printNode);
        
$visitor2->expects($this->at(2))->method('leaveNode')->with($printNode);

        
$visitor1->expects($this->at(3))->method('enterNode')->with($negNode);
        
$visitor2->expects($this->at(3))->method('enterNode')->with($negNode);

        
$visitor1->expects($this->at(4))->method('enterNode')->with($mulNode);
        
$visitor2->expects($this->at(4))->method('enterNode')->with($mulNode)
            ->
will($this->returnValue(NodeTraverser::DONT_TRAVERSE_CHILDREN));

        
$visitor1->expects($this->at(5))->method('leaveNode')->with($mulNode);
        
$visitor2->expects($this->at(5))->method('leaveNode')->with($mulNode);

        
$visitor1->expects($this->at(6))->method('leaveNode')->with($negNode);
        
$visitor2->expects($this->at(6))->method('leaveNode')->with($negNode);

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor1);
        
$traverser->addVisitor($visitor2);

        
$this->assertEquals($stmts$traverser->traverse($stmts));
    }

    public function 
testRemovingVisitor() {
        
$visitor1 $this->getMock('PhpParser\NodeVisitor');
        
$visitor2 $this->getMock('PhpParser\NodeVisitor');
        
$visitor3 $this->getMock('PhpParser\NodeVisitor');

        
$traverser = new NodeTraverser;
        
$traverser->addVisitor($visitor1);
        
$traverser->addVisitor($visitor2);
        
$traverser->addVisitor($visitor3);

        
$preExpected = array($visitor1$visitor2$visitor3);
        
$this->assertAttributeSame($preExpected'visitors'$traverser'The appropriate visitors have not been added');

        
$traverser->removeVisitor($visitor2);

        
$postExpected = array(=> $visitor1=> $visitor3);
        
$this->assertAttributeSame($postExpected'visitors'$traverser'The appropriate visitors are not present after removal');
    }

    public function 
testCloneNodes() {
        
$stmts = array(new Node\Stmt\Echo_(array(new String_('Foo'), new String_('Bar'))));

        
$traverser = new NodeTraverser(true);

        
$this->assertNotSame($stmts$traverser->traverse($stmts));
    }

    public function 
testNoCloneNodesByDefault() {
        
$stmts = array(new Node\Stmt\Echo_(array(new String_('Foo'), new String_('Bar'))));

        
$traverser = new NodeTraverser;

        
$this->assertSame($stmts$traverser->traverse($stmts));
    }

    
/**
     * @expectedException \LogicException
     * @expectedExceptionMessage leaveNode() may only return an array if the parent structure is an array
     */
    
public function testReplaceByArrayOnlyAllowedIfParentIsArray() {
        
$stmts = array(new Node\Expr\UnaryMinus(new Node\Scalar\LNumber(42)));

        
$visitor $this->getMock('PhpParser\NodeVisitor');
        
$visitor->method('leaveNode')->willReturn(array(new Node\Scalar\DNumber(42.0)));

        
$traverser = new NodeTraverser();
        
$traverser->addVisitor($visitor);
        
$traverser->traverse($stmts);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.0 [PHP 7 Update] [25.02.2019] maintained by PinoyWH1Z | C99Shell Github | Generation time: 0.0343 ]--