Yaffs site version 1.1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / tests / phpDocumentor / Reflection / DocBlockTest.php
diff --git a/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php b/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlockTest.php
new file mode 100644 (file)
index 0000000..30eedfc
--- /dev/null
@@ -0,0 +1,337 @@
+<?php
+/**
+ * phpDocumentor DocBlock Test
+ *
+ * PHP Version 5.3
+ *
+ * @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
+ */
+
+namespace phpDocumentor\Reflection;
+
+use phpDocumentor\Reflection\DocBlock\Context;
+use phpDocumentor\Reflection\DocBlock\Location;
+use phpDocumentor\Reflection\DocBlock\Tag\ReturnTag;
+
+/**
+ * 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
+ */
+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'));
+    }
+}