Файл: gapps/vendor/phpdocumentor/reflection-docblock/tests/unit/DocBlockTest.php
Строк: 251
<?php
/**
* This file is part of phpDocumentor.
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*
* @copyright 2010-2015 Mike van Riel<mike@phpdoc.org>
* @license http://www.opensource.org/licenses/mit-license.php MIT
* @link http://phpdoc.org
*/
namespace phpDocumentorReflection;
use Mockery as m;
use phpDocumentorReflectionTypesContext;
/**
* @coversDefaultClass phpDocumentorReflectionDocBlock
* @covers ::<private>
* @uses WebmozartAssertAssert
*/
class DocBlockTest extends PHPUnit_Framework_TestCase
{
/**
* @covers ::__construct
* @covers ::getSummary
*
* @uses phpDocumentorReflectionDocBlockDescription
*/
public function testDocBlockCanHaveASummary()
{
$summary = 'This is a summary';
$fixture = new DocBlock($summary);
$this->assertSame($summary, $fixture->getSummary());
}
/**
* @covers ::__construct
*
* @expectedException InvalidArgumentException
*/
public function testExceptionIsThrownIfSummaryIsNotAString()
{
new DocBlock([]);
}
/**
* @covers ::__construct
*
* @expectedException InvalidArgumentException
*/
public function testExceptionIsThrownIfTemplateStartIsNotABoolean()
{
new DocBlock('', null, [], null, null, ['is not boolean']);
}
/**
* @covers ::__construct
*
* @expectedException InvalidArgumentException
*/
public function testExceptionIsThrownIfTemplateEndIsNotABoolean()
{
new DocBlock('', null, [], null, null, false, ['is not boolean']);
}
/**
* @covers ::__construct
* @covers ::getDescription
*
* @uses phpDocumentorReflectionDocBlockDescription
*/
public function testDocBlockCanHaveADescription()
{
$description = new DocBlockDescription('');
$fixture = new DocBlock('', $description);
$this->assertSame($description, $fixture->getDescription());
}
/**
* @covers ::__construct
* @covers ::getTags
*
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionDocBlockTag
*/
public function testDocBlockCanHaveTags()
{
$tags = [
m::mock(DocBlockTag::class)
];
$fixture = new DocBlock('', null, $tags);
$this->assertSame($tags, $fixture->getTags());
}
/**
* @covers ::__construct
* @covers ::getTags
*
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionDocBlockTag
*
* @expectedException InvalidArgumentException
*/
public function testDocBlockAllowsOnlyTags()
{
$tags = [
null
];
$fixture = new DocBlock('', null, $tags);
}
/**
* @covers ::__construct
* @covers ::getTagsByName
*
* @uses phpDocumentorReflectionDocBlock::getTags
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionDocBlockTag
*/
public function testFindTagsInDocBlockByName()
{
$tag1 = m::mock(DocBlockTag::class);
$tag2 = m::mock(DocBlockTag::class);
$tag3 = m::mock(DocBlockTag::class);
$tags = [$tag1, $tag2, $tag3];
$tag1->shouldReceive('getName')->andReturn('abc');
$tag2->shouldReceive('getName')->andReturn('abcd');
$tag3->shouldReceive('getName')->andReturn('ab');
$fixture = new DocBlock('', null, $tags);
$this->assertSame([$tag2], $fixture->getTagsByName('abcd'));
$this->assertSame([], $fixture->getTagsByName('Ebcd'));
}
/**
* @covers ::__construct
* @covers ::getTagsByName
* @uses phpDocumentorReflectionDocBlockDescription
* @expectedException InvalidArgumentException
*/
public function testExceptionIsThrownIfNameForTagsIsNotString()
{
$fixture = new DocBlock();
$fixture->getTagsByName([]);
}
/**
* @covers ::__construct
* @covers ::hasTag
*
* @uses phpDocumentorReflectionDocBlock::getTags
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionDocBlockTag
*/
public function testCheckIfThereAreTagsWithAGivenName()
{
$tag1 = m::mock(DocBlockTag::class);
$tag2 = m::mock(DocBlockTag::class);
$tag3 = m::mock(DocBlockTag::class);
$tags = [$tag1, $tag2, $tag3];
$tag1->shouldReceive('getName')->twice()->andReturn('abc');
$tag2->shouldReceive('getName')->twice()->andReturn('abcd');
$tag3->shouldReceive('getName')->once();
$fixture = new DocBlock('', null, $tags);
$this->assertTrue($fixture->hasTag('abcd'));
$this->assertFalse($fixture->hasTag('Ebcd'));
}
/**
* @covers ::__construct
* @covers ::hasTag
* @uses phpDocumentorReflectionDocBlockDescription
* @expectedException InvalidArgumentException
*/
public function testExceptionIsThrownIfNameForCheckingTagsIsNotString()
{
$fixture = new DocBlock();
$fixture->hasTag([]);
}
/**
* @covers ::__construct
* @covers ::getContext
*
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionTypesContext
*/
public function testDocBlockKnowsInWhichNamespaceItIsAndWhichAliasesThereAre()
{
$context = new Context('');
$fixture = new DocBlock('', null, [], $context);
$this->assertSame($context, $fixture->getContext());
}
/**
* @covers ::__construct
* @covers ::getLocation
*
* @uses phpDocumentorReflectionDocBlockDescription
* @uses phpDocumentorReflectionLocation
*/
public function testDocBlockKnowsAtWhichLineItIs()
{
$location = new Location(10);
$fixture = new DocBlock('', null, [], null, $location);
$this->assertSame($location, $fixture->getLocation());
}
/**
* @covers ::__construct
* @covers ::isTemplateStart
*
* @uses phpDocumentorReflectionDocBlockDescription
*/
public function testDocBlockKnowsIfItIsTheStartOfADocBlockTemplate()
{
$fixture = new DocBlock('', null, [], null, null, true);
$this->assertTrue($fixture->isTemplateStart());
}
/**
* @covers ::__construct
* @covers ::isTemplateEnd
*
* @uses phpDocumentorReflectionDocBlockDescription
*/
public function testDocBlockKnowsIfItIsTheEndOfADocBlockTemplate()
{
$fixture = new DocBlock('', null, [], null, null, false, true);
$this->assertTrue($fixture->isTemplateEnd());
}
}