You are here

class DocBlockTest in Zircon Profile 8

Same name and namespace in other branches
  1. 8.0 vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php \phpDocumentor\Reflection\DocBlockTest

Test class for phpDocumentor\Reflection\DocBlock

@author Mike van Riel <mike.vanriel@naenius.com> @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com) @license http://www.opensource.org/licenses/mit-license.php MIT @link http://phpdoc.org

Hierarchy

  • class \phpDocumentor\Reflection\DocBlockTest extends \phpDocumentor\Reflection\PHPUnit_Framework_TestCase

Expanded class hierarchy of DocBlockTest

File

vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php, line 27

Namespace

phpDocumentor\Reflection
View source
class DocBlockTest extends \PHPUnit_Framework_TestCase {

  /**
   * @covers \phpDocumentor\Reflection\DocBlock
   *
   * @return void
   */
  public function testConstruct() {
    $fixture = <<<DOCBLOCK
/**
 * This is a short description
 *
 * This is a long description
 *
 * @see \\MyClass
 * @return void
 */
DOCBLOCK;
    $object = new DocBlock($fixture, new Context('\\MyNamespace', array(
      'PHPDoc' => '\\phpDocumentor',
    )), new Location(2));
    $this
      ->assertEquals('This is a short description', $object
      ->getShortDescription());
    $this
      ->assertEquals('This is a long description', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertCount(2, $object
      ->getTags());
    $this
      ->assertTrue($object
      ->hasTag('see'));
    $this
      ->assertTrue($object
      ->hasTag('return'));
    $this
      ->assertFalse($object
      ->hasTag('category'));
    $this
      ->assertSame('MyNamespace', $object
      ->getContext()
      ->getNamespace());
    $this
      ->assertSame(array(
      'PHPDoc' => '\\phpDocumentor',
    ), $object
      ->getContext()
      ->getNamespaceAliases());
    $this
      ->assertSame(2, $object
      ->getLocation()
      ->getLineNumber());
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::splitDocBlock
   *
   * @return void
   */
  public function testConstructWithTagsOnly() {
    $fixture = <<<DOCBLOCK
/**
 * @see \\MyClass
 * @return void
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('', $object
      ->getShortDescription());
    $this
      ->assertEquals('', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertCount(2, $object
      ->getTags());
    $this
      ->assertTrue($object
      ->hasTag('see'));
    $this
      ->assertTrue($object
      ->hasTag('return'));
    $this
      ->assertFalse($object
      ->hasTag('category'));
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::isTemplateStart
   */
  public function testIfStartOfTemplateIsDiscovered() {
    $fixture = <<<DOCBLOCK
/**#@+
 * @see \\MyClass
 * @return void
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('', $object
      ->getShortDescription());
    $this
      ->assertEquals('', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertCount(2, $object
      ->getTags());
    $this
      ->assertTrue($object
      ->hasTag('see'));
    $this
      ->assertTrue($object
      ->hasTag('return'));
    $this
      ->assertFalse($object
      ->hasTag('category'));
    $this
      ->assertTrue($object
      ->isTemplateStart());
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::isTemplateEnd
   */
  public function testIfEndOfTemplateIsDiscovered() {
    $fixture = <<<DOCBLOCK
/**#@-*/
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('', $object
      ->getShortDescription());
    $this
      ->assertEquals('', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertTrue($object
      ->isTemplateEnd());
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::cleanInput
   *
   * @return void
   */
  public function testConstructOneLiner() {
    $fixture = '/** Short description and nothing more. */';
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('Short description and nothing more.', $object
      ->getShortDescription());
    $this
      ->assertEquals('', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertCount(0, $object
      ->getTags());
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::__construct
   *
   * @return void
   */
  public function testConstructFromReflector() {
    $object = new DocBlock(new \ReflectionClass($this));
    $this
      ->assertEquals('Test class for phpDocumentor\\Reflection\\DocBlock', $object
      ->getShortDescription());
    $this
      ->assertEquals('', $object
      ->getLongDescription()
      ->getContents());
    $this
      ->assertCount(4, $object
      ->getTags());
    $this
      ->assertTrue($object
      ->hasTag('author'));
    $this
      ->assertTrue($object
      ->hasTag('copyright'));
    $this
      ->assertTrue($object
      ->hasTag('license'));
    $this
      ->assertTrue($object
      ->hasTag('link'));
    $this
      ->assertFalse($object
      ->hasTag('category'));
  }

  /**
   * @expectedException \InvalidArgumentException
   *
   * @return void
   */
  public function testExceptionOnInvalidObject() {
    new DocBlock($this);
  }
  public function testDotSeperation() {
    $fixture = <<<DOCBLOCK
/**
 * This is a short description.
 * This is a long description.
 * This is a continuation of the long description.
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('This is a short description.', $object
      ->getShortDescription());
    $this
      ->assertEquals("This is a long description.\nThis is a continuation of the long " . "description.", $object
      ->getLongDescription()
      ->getContents());
  }

  /**
   * @covers \phpDocumentor\Reflection\DocBlock::parseTags
   * @expectedException \LogicException
   *
   * @return void
   */
  public function testInvalidTagBlock() {
    if (0 == ini_get('allow_url_include')) {
      $this
        ->markTestSkipped('"data" URIs for includes are required.');
    }
    include 'data:text/plain;base64,' . base64_encode(<<<DOCBLOCK_EXTENSION
<?php
class MyReflectionDocBlock extends \\phpDocumentor\\Reflection\\DocBlock {
    protected function splitDocBlock(\$comment) {
        return array('', '', 'Invalid tag block');
    }
}
DOCBLOCK_EXTENSION
);
    new \MyReflectionDocBlock('');
  }
  public function testTagCaseSensitivity() {
    $fixture = <<<DOCBLOCK
/**
 * This is a short description.
 *
 * This is a long description.
 *
 * @method null something()
 * @Method({"GET", "POST"})
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEquals('This is a short description.', $object
      ->getShortDescription());
    $this
      ->assertEquals('This is a long description.', $object
      ->getLongDescription()
      ->getContents());
    $tags = $object
      ->getTags();
    $this
      ->assertCount(2, $tags);
    $this
      ->assertTrue($object
      ->hasTag('method'));
    $this
      ->assertTrue($object
      ->hasTag('Method'));
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\DocBlock\\Tag\\MethodTag', $tags[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\DocBlock\\Tag', $tags[1]);
    $this
      ->assertNotInstanceOf(__NAMESPACE__ . '\\DocBlock\\Tag\\MethodTag', $tags[1]);
  }

  /**
   * @depends testConstructFromReflector
   * @covers \phpDocumentor\Reflection\DocBlock::getTagsByName
   *
   * @return void
   */
  public function testGetTagsByNameZeroAndOneMatch() {
    $object = new DocBlock(new \ReflectionClass($this));
    $this
      ->assertEmpty($object
      ->getTagsByName('category'));
    $this
      ->assertCount(1, $object
      ->getTagsByName('author'));
  }

  /**
   * @depends testConstructWithTagsOnly
   * @covers \phpDocumentor\Reflection\DocBlock::parseTags
   *
   * @return void
   */
  public function testParseMultilineTag() {
    $fixture = <<<DOCBLOCK
/**
 * @return void Content on
 *     multiple lines.
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertCount(1, $object
      ->getTags());
  }

  /**
   * @depends testConstructWithTagsOnly
   * @covers \phpDocumentor\Reflection\DocBlock::parseTags
   *
   * @return void
   */
  public function testParseMultilineTagWithLineBreaks() {
    $fixture = <<<DOCBLOCK
/**
 * @return void Content on
 *     multiple lines.
 *
 *     One more, after the break.
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertCount(1, $tags = $object
      ->getTags());

    /** @var ReturnTag $tag */
    $tag = reset($tags);
    $this
      ->assertEquals("Content on\n    multiple lines.\n\n    One more, after the break.", $tag
      ->getDescription());
  }

  /**
   * @depends testConstructWithTagsOnly
   * @covers \phpDocumentor\Reflection\DocBlock::getTagsByName
   *
   * @return void
   */
  public function testGetTagsByNameMultipleMatch() {
    $fixture = <<<DOCBLOCK
/**
 * @param string
 * @param int
 * @return void
 */
DOCBLOCK;
    $object = new DocBlock($fixture);
    $this
      ->assertEmpty($object
      ->getTagsByName('category'));
    $this
      ->assertCount(1, $object
      ->getTagsByName('return'));
    $this
      ->assertCount(2, $object
      ->getTagsByName('param'));
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DocBlockTest::testConstruct public function @covers \phpDocumentor\Reflection\DocBlock
DocBlockTest::testConstructFromReflector public function @covers \phpDocumentor\Reflection\DocBlock::__construct
DocBlockTest::testConstructOneLiner public function @covers \phpDocumentor\Reflection\DocBlock::cleanInput
DocBlockTest::testConstructWithTagsOnly public function @covers \phpDocumentor\Reflection\DocBlock::splitDocBlock
DocBlockTest::testDotSeperation public function
DocBlockTest::testExceptionOnInvalidObject public function @expectedException \InvalidArgumentException
DocBlockTest::testGetTagsByNameMultipleMatch public function @depends testConstructWithTagsOnly @covers \phpDocumentor\Reflection\DocBlock::getTagsByName
DocBlockTest::testGetTagsByNameZeroAndOneMatch public function @depends testConstructFromReflector @covers \phpDocumentor\Reflection\DocBlock::getTagsByName
DocBlockTest::testIfEndOfTemplateIsDiscovered public function @covers \phpDocumentor\Reflection\DocBlock::isTemplateEnd
DocBlockTest::testIfStartOfTemplateIsDiscovered public function @covers \phpDocumentor\Reflection\DocBlock::isTemplateStart
DocBlockTest::testInvalidTagBlock public function @covers \phpDocumentor\Reflection\DocBlock::parseTags @expectedException \LogicException
DocBlockTest::testParseMultilineTag public function @depends testConstructWithTagsOnly @covers \phpDocumentor\Reflection\DocBlock::parseTags
DocBlockTest::testParseMultilineTagWithLineBreaks public function @depends testConstructWithTagsOnly @covers \phpDocumentor\Reflection\DocBlock::parseTags
DocBlockTest::testTagCaseSensitivity public function