You are here

DescriptionTest.php in Zircon Profile 8

File

vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php
View source
<?php

/**
 * phpDocumentor Description Test
 *
 * PHP Version 5.3
 *
 * @author    Vasil Rangelov <boen.robot@gmail.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
 */
namespace phpDocumentor\Reflection\DocBlock;


/**
 * Test class for \phpDocumentor\Reflection\DocBlock\Description
 *
 * @author    Vasil Rangelov <boen.robot@gmail.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
 */
class DescriptionTest extends \PHPUnit_Framework_TestCase {
  public function testConstruct() {
    $fixture = <<<LONGDESC
This is text for a description.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(1, $parsedContents);
    $this
      ->assertSame($fixture, $parsedContents[0]);
  }
  public function testInlineTagParsing() {
    $fixture = <<<LONGDESC
This is text for a {@link http://phpdoc.org/ description} that uses inline
tags.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('This is text for a ', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag\\LinkTag', $parsedContents[1]);
    $this
      ->assertSame(' that uses inline
tags.', $parsedContents[2]);
  }
  public function testInlineTagAtStartParsing() {
    $fixture = <<<LONGDESC
{@link http://phpdoc.org/ This} is text for a description that uses inline
tags.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag\\LinkTag', $parsedContents[1]);
    $this
      ->assertSame(' is text for a description that uses inline
tags.', $parsedContents[2]);
  }
  public function testNestedInlineTagParsing() {
    $fixture = <<<LONGDESC
This is text for a description with {@internal inline tag with
{@link http://phpdoc.org another inline tag} in it}.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('This is text for a description with ', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag', $parsedContents[1]);
    $this
      ->assertSame('.', $parsedContents[2]);
    $parsedDescription = $parsedContents[1]
      ->getParsedDescription();
    $this
      ->assertCount(3, $parsedDescription);
    $this
      ->assertSame("inline tag with\n", $parsedDescription[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag\\LinkTag', $parsedDescription[1]);
    $this
      ->assertSame(' in it', $parsedDescription[2]);
  }
  public function testLiteralOpeningDelimiter() {
    $fixture = <<<LONGDESC
This is text for a description containing { that is literal.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(1, $parsedContents);
    $this
      ->assertSame($fixture, $parsedContents[0]);
  }
  public function testNestedLiteralOpeningDelimiter() {
    $fixture = <<<LONGDESC
This is text for a description containing {@internal inline tag that has { that
is literal}.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('This is text for a description containing ', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag', $parsedContents[1]);
    $this
      ->assertSame('.', $parsedContents[2]);
    $this
      ->assertSame(array(
      'inline tag that has { that
is literal',
    ), $parsedContents[1]
      ->getParsedDescription());
  }
  public function testLiteralClosingDelimiter() {
    $fixture = <<<LONGDESC
This is text for a description with {} that is not a tag.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(1, $parsedContents);
    $this
      ->assertSame('This is text for a description with } that is not a tag.', $parsedContents[0]);
  }
  public function testNestedLiteralClosingDelimiter() {
    $fixture = <<<LONGDESC
This is text for a description with {@internal inline tag with {} that is not an
inline tag}.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('This is text for a description with ', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag', $parsedContents[1]);
    $this
      ->assertSame('.', $parsedContents[2]);
    $this
      ->assertSame(array(
      'inline tag with } that is not an
inline tag',
    ), $parsedContents[1]
      ->getParsedDescription());
  }
  public function testInlineTagEscapingSequence() {
    $fixture = <<<LONGDESC
This is text for a description with literal {{@}link}.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(1, $parsedContents);
    $this
      ->assertSame('This is text for a description with literal {@link}.', $parsedContents[0]);
  }
  public function testNestedInlineTagEscapingSequence() {
    $fixture = <<<LONGDESC
This is text for a description with an {@internal inline tag with literal
{{@}link{} in it}.
LONGDESC;
    $object = new Description($fixture);
    $this
      ->assertSame($fixture, $object
      ->getContents());
    $parsedContents = $object
      ->getParsedContents();
    $this
      ->assertCount(3, $parsedContents);
    $this
      ->assertSame('This is text for a description with an ', $parsedContents[0]);
    $this
      ->assertInstanceOf(__NAMESPACE__ . '\\Tag', $parsedContents[1]);
    $this
      ->assertSame('.', $parsedContents[2]);
    $this
      ->assertSame(array(
      'inline tag with literal
{@link} in it',
    ), $parsedContents[1]
      ->getParsedDescription());
  }

}