53 lines
1.5 KiB
PHP
53 lines
1.5 KiB
PHP
|
<?php
|
||
|
|
||
|
/*
|
||
|
* This file is part of Psy Shell.
|
||
|
*
|
||
|
* (c) 2012-2018 Justin Hileman
|
||
|
*
|
||
|
* For the full copyright and license information, please view the LICENSE
|
||
|
* file that was distributed with this source code.
|
||
|
*/
|
||
|
|
||
|
namespace Psy\Test\Command\TimeitCommand;
|
||
|
|
||
|
use PhpParser\NodeTraverser;
|
||
|
use Psy\Command\TimeitCommand\TimeitVisitor;
|
||
|
use Psy\Test\ParserTestCase;
|
||
|
|
||
|
class TimeitVisitorTest extends ParserTestCase
|
||
|
{
|
||
|
public function setUp()
|
||
|
{
|
||
|
$this->traverser = new NodeTraverser();
|
||
|
$this->traverser->addVisitor(new TimeitVisitor());
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @dataProvider codez
|
||
|
*/
|
||
|
public function testProcess($from, $to)
|
||
|
{
|
||
|
$this->assertProcessesAs($from, $to);
|
||
|
}
|
||
|
|
||
|
public function codez()
|
||
|
{
|
||
|
$start = '\Psy\Command\TimeitCommand::markStart';
|
||
|
$end = '\Psy\Command\TimeitCommand::markEnd';
|
||
|
$noReturn = 'new \Psy\CodeCleaner\NoReturnValue()';
|
||
|
|
||
|
return [
|
||
|
['', "$end($start());"], // heh
|
||
|
['a()', "$start(); $end(a());"],
|
||
|
['$b()', "$start(); $end(\$b());"],
|
||
|
['$c->d()', "$start(); $end(\$c->d());"],
|
||
|
['e(); f()', "$start(); e(); $end(f());"],
|
||
|
['function g() { return 1; }', "$start(); function g() {return 1;} $end($noReturn);"],
|
||
|
['return 1', "$start(); return $end(1);"],
|
||
|
['return 1; 2', "$start(); return $end(1); $end(2);"],
|
||
|
['return 1; function h() {}', "$start(); return $end(1); function h() {} $end($noReturn);"],
|
||
|
];
|
||
|
}
|
||
|
}
|