Mercurial > hg > isophonics-drupal-site
diff vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php @ 13:5fb285c0d0e3
Update Drupal core to 8.4.7 via Composer. Security update; I *think* we've
been lucky to get away with this so far, as we don't support self-registration
which seems to be used by the so-called "drupalgeddon 2" attack that 8.4.5
was vulnerable to.
author | Chris Cannam |
---|---|
date | Mon, 23 Apr 2018 09:33:26 +0100 |
parents | 4c8ae668cc8c |
children | 129ea1e6d783 |
line wrap: on
line diff
--- a/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php Fri Feb 23 15:52:07 2018 +0000 +++ b/vendor/nikic/php-parser/test/PhpParser/Node/Stmt/ClassMethodTest.php Mon Apr 23 09:33:26 2018 +0100 @@ -1,22 +1,27 @@ -<?php +<?php declare(strict_types=1); namespace PhpParser\Node\Stmt; -class ClassMethodTest extends \PHPUnit_Framework_TestCase +use PhpParser\Node\Expr\Variable; +use PhpParser\Node\Name; +use PhpParser\Node\Param; +use PHPUnit\Framework\TestCase; + +class ClassMethodTest extends TestCase { /** * @dataProvider provideModifiers */ public function testModifiers($modifier) { - $node = new ClassMethod('foo', array( + $node = new ClassMethod('foo', [ 'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier)) - )); + ]); $this->assertTrue($node->{'is' . $modifier}()); } public function testNoModifiers() { - $node = new ClassMethod('foo', array('type' => 0)); + $node = new ClassMethod('foo', ['type' => 0]); $this->assertTrue($node->isPublic()); $this->assertFalse($node->isProtected()); @@ -24,17 +29,18 @@ $this->assertFalse($node->isAbstract()); $this->assertFalse($node->isFinal()); $this->assertFalse($node->isStatic()); + $this->assertFalse($node->isMagic()); } public function provideModifiers() { - return array( - array('public'), - array('protected'), - array('private'), - array('abstract'), - array('final'), - array('static'), - ); + return [ + ['public'], + ['protected'], + ['private'], + ['abstract'], + ['final'], + ['static'], + ]; } /** @@ -42,22 +48,77 @@ * * @dataProvider implicitPublicModifiers * - * @param integer $modifier Node type modifier + * @param string $modifier Node type modifier */ - public function testImplicitPublic($modifier) + public function testImplicitPublic(string $modifier) { - $node = new ClassMethod('foo', array( + $node = new ClassMethod('foo', [ 'type' => constant('PhpParser\Node\Stmt\Class_::MODIFIER_' . strtoupper($modifier)) - )); + ]); $this->assertTrue($node->isPublic(), 'Node should be implicitly public'); } public function implicitPublicModifiers() { - return array( - array('abstract'), - array('final'), - array('static'), - ); + return [ + ['abstract'], + ['final'], + ['static'], + ]; + } + + /** + * @dataProvider provideMagics + * + * @param string $name Node name + */ + public function testMagic(string $name) { + $node = new ClassMethod($name); + $this->assertTrue($node->isMagic(), 'Method should be magic'); + } + + public function provideMagics() { + return [ + ['__construct'], + ['__DESTRUCT'], + ['__caLL'], + ['__callstatic'], + ['__get'], + ['__set'], + ['__isset'], + ['__unset'], + ['__sleep'], + ['__wakeup'], + ['__tostring'], + ['__set_state'], + ['__clone'], + ['__invoke'], + ['__debuginfo'], + ]; + } + + public function testFunctionLike() { + $param = new Param(new Variable('a')); + $type = new Name('Foo'); + $return = new Return_(new Variable('a')); + $method = new ClassMethod('test', [ + 'byRef' => false, + 'params' => [$param], + 'returnType' => $type, + 'stmts' => [$return], + ]); + + $this->assertFalse($method->returnsByRef()); + $this->assertSame([$param], $method->getParams()); + $this->assertSame($type, $method->getReturnType()); + $this->assertSame([$return], $method->getStmts()); + + $method = new ClassMethod('test', [ + 'byRef' => true, + 'stmts' => null, + ]); + + $this->assertTrue($method->returnsByRef()); + $this->assertNull($method->getStmts()); } }