annotate vendor/psy/psysh/test/Util/DocblockTest.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
Chris@13 1 <?php
Chris@13 2
Chris@13 3 /*
Chris@13 4 * This file is part of Psy Shell.
Chris@13 5 *
Chris@13 6 * (c) 2012-2018 Justin Hileman
Chris@13 7 *
Chris@13 8 * For the full copyright and license information, please view the LICENSE
Chris@13 9 * file that was distributed with this source code.
Chris@13 10 */
Chris@13 11
Chris@13 12 namespace Psy\Test\Util;
Chris@13 13
Chris@13 14 use Psy\Util\Docblock;
Chris@13 15
Chris@13 16 class DocblockTest extends \PHPUnit\Framework\TestCase
Chris@13 17 {
Chris@13 18 /**
Chris@13 19 * @dataProvider comments
Chris@13 20 */
Chris@13 21 public function testDocblockParsing($comment, $body, $tags)
Chris@13 22 {
Chris@13 23 $reflector = $this
Chris@13 24 ->getMockBuilder('ReflectionClass')
Chris@13 25 ->disableOriginalConstructor()
Chris@13 26 ->getMock();
Chris@13 27
Chris@13 28 $reflector->expects($this->once())
Chris@13 29 ->method('getDocComment')
Chris@13 30 ->will($this->returnValue($comment));
Chris@13 31
Chris@13 32 $docblock = new Docblock($reflector);
Chris@13 33
Chris@13 34 $this->assertSame($body, $docblock->desc);
Chris@13 35
Chris@13 36 foreach ($tags as $tag => $value) {
Chris@13 37 $this->assertTrue($docblock->hasTag($tag));
Chris@13 38 $this->assertEquals($value, $docblock->tag($tag));
Chris@13 39 }
Chris@13 40 }
Chris@13 41
Chris@13 42 public function comments()
Chris@13 43 {
Chris@17 44 if (\defined('HHVM_VERSION')) {
Chris@13 45 $this->markTestSkipped('We have issues with PHPUnit mocks on HHVM.');
Chris@13 46 }
Chris@13 47
Chris@13 48 return [
Chris@13 49 ['', '', []],
Chris@13 50 [
Chris@13 51 '/**
Chris@13 52 * This is a docblock
Chris@13 53 *
Chris@13 54 * @throws \Exception with a description
Chris@13 55 */',
Chris@13 56 'This is a docblock',
Chris@13 57 [
Chris@13 58 'throws' => [['type' => '\Exception', 'desc' => 'with a description']],
Chris@13 59 ],
Chris@13 60 ],
Chris@13 61 [
Chris@13 62 '/**
Chris@13 63 * This is a slightly longer docblock
Chris@13 64 *
Chris@13 65 * @param int $foo Is a Foo
Chris@13 66 * @param string $bar With some sort of description
Chris@13 67 * @param \ClassName $baz is cool too
Chris@13 68 *
Chris@13 69 * @return int At least it isn\'t a string
Chris@13 70 */',
Chris@13 71 'This is a slightly longer docblock',
Chris@13 72 [
Chris@13 73 'param' => [
Chris@13 74 ['type' => 'int', 'desc' => 'Is a Foo', 'var' => '$foo'],
Chris@13 75 ['type' => 'string', 'desc' => 'With some sort of description', 'var' => '$bar'],
Chris@13 76 ['type' => '\ClassName', 'desc' => 'is cool too', 'var' => '$baz'],
Chris@13 77 ],
Chris@13 78 'return' => [
Chris@13 79 ['type' => 'int', 'desc' => 'At least it isn\'t a string'],
Chris@13 80 ],
Chris@13 81 ],
Chris@13 82 ],
Chris@13 83 [
Chris@13 84 '/**
Chris@13 85 * This is a docblock!
Chris@13 86 *
Chris@13 87 * It spans lines, too!
Chris@13 88 *
Chris@13 89 * @tagname plus a description
Chris@13 90 *
Chris@13 91 * @return
Chris@13 92 */',
Chris@13 93 "This is a docblock!\n\nIt spans lines, too!",
Chris@13 94 [
Chris@13 95 'tagname' => ['plus a description'],
Chris@13 96 ],
Chris@13 97 ],
Chris@13 98 ];
Chris@13 99 }
Chris@13 100 }