Yaffs site version 1.1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / tests / phpDocumentor / Reflection / DocBlock / DescriptionTest.php
diff --git a/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php b/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/DescriptionTest.php
new file mode 100644 (file)
index 0000000..a6ca7b3
--- /dev/null
@@ -0,0 +1,245 @@
+<?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()
+        );
+    }
+}