Yaffs site version 1.1
[yaffs-website] / vendor / phpdocumentor / reflection-docblock / tests / phpDocumentor / Reflection / DocBlock / TagTest.php
diff --git a/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/TagTest.php b/vendor/phpdocumentor/reflection-docblock/tests/phpDocumentor/Reflection/DocBlock/TagTest.php
new file mode 100644 (file)
index 0000000..9e873ec
--- /dev/null
@@ -0,0 +1,313 @@
+<?php
+/**
+ * phpDocumentor Var Tag Test
+ * 
+ * PHP version 5.3
+ *
+ * @author    Daniel O'Connor <daniel.oconnor@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;
+
+use phpDocumentor\Reflection\DocBlock;
+use phpDocumentor\Reflection\DocBlock\Context;
+
+/**
+ * Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag
+ *
+ * @author    Daniel O'Connor <daniel.oconnor@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 TagTest extends \PHPUnit_Framework_TestCase
+{
+    
+    /**
+     * @expectedException \InvalidArgumentException
+     * 
+     * @return void
+     */
+    public function testInvalidTagLine()
+    {
+        Tag::createInstance('Invalid tag line');
+    }
+
+    /**
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * 
+     * @return void
+     */
+    public function testTagHandlerUnregistration()
+    {
+        $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
+        $tagPreUnreg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPreUnreg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreUnreg
+        );
+
+        Tag::registerTagHandler('var', null);
+
+        $tagPostUnreg = Tag::createInstance('@var mixed');
+        $this->assertNotInstanceOf(
+            $currentHandler,
+            $tagPostUnreg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostUnreg
+        );
+
+        Tag::registerTagHandler('var', $currentHandler);
+    }
+
+    /**
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * 
+     * @return void
+     */
+    public function testTagHandlerCorrectRegistration()
+    {
+        if (0 == ini_get('allow_url_include')) {
+            $this->markTestSkipped('"data" URIs for includes are required.');
+        }
+        $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
+        $tagPreReg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPreReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreReg
+        );
+
+        include 'data:text/plain;base64,'. base64_encode(
+<<<TAG_HANDLER
+<?php
+    class MyTagHandler extends \phpDocumentor\Reflection\DocBlock\Tag {}
+TAG_HANDLER
+        );
+
+        $this->assertTrue(Tag::registerTagHandler('var', '\MyTagHandler'));
+
+        $tagPostReg = Tag::createInstance('@var mixed');
+        $this->assertNotInstanceOf(
+            $currentHandler,
+            $tagPostReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostReg
+        );
+        $this->assertInstanceOf(
+            '\MyTagHandler',
+            $tagPostReg
+        );
+
+        $this->assertTrue(Tag::registerTagHandler('var', $currentHandler));
+    }
+    
+    /**
+     * @depends testTagHandlerCorrectRegistration
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance
+     * 
+     * @return void
+     */
+    public function testNamespacedTagHandlerCorrectRegistration()
+    {
+        $tagPreReg = Tag::createInstance('@T something');
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreReg
+        );
+        $this->assertNotInstanceOf(
+            '\MyTagHandler',
+            $tagPreReg
+        );
+
+        $this->assertTrue(
+            Tag::registerTagHandler('\MyNamespace\MyTag', '\MyTagHandler')
+        );
+
+        $tagPostReg = Tag::createInstance(
+            '@T something',
+            new DocBlock(
+                '',
+                new Context('', array('T' => '\MyNamespace\MyTag'))
+            )
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostReg
+        );
+        $this->assertInstanceOf(
+            '\MyTagHandler',
+            $tagPostReg
+        );
+
+        $this->assertTrue(
+            Tag::registerTagHandler('\MyNamespace\MyTag', null)
+        );
+    }
+    
+    /**
+     * @depends testTagHandlerCorrectRegistration
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance
+     * 
+     * @return void
+     */
+    public function testNamespacedTagHandlerIncorrectRegistration()
+    {
+        $tagPreReg = Tag::createInstance('@T something');
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreReg
+        );
+        $this->assertNotInstanceOf(
+            '\MyTagHandler',
+            $tagPreReg
+        );
+
+        $this->assertFalse(
+            Tag::registerTagHandler('MyNamespace\MyTag', '\MyTagHandler')
+        );
+
+        $tagPostReg = Tag::createInstance(
+            '@T something',
+            new DocBlock(
+                '',
+                new Context('', array('T' => '\MyNamespace\MyTag'))
+            )
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostReg
+        );
+        $this->assertNotInstanceOf(
+            '\MyTagHandler',
+            $tagPostReg
+        );
+    }
+
+    /**
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * 
+     * @return void
+     */
+    public function testNonExistentTagHandlerRegistration()
+    {
+        $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
+        $tagPreReg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPreReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreReg
+        );
+
+        $this->assertFalse(Tag::registerTagHandler('var', 'Non existent'));
+
+        $tagPostReg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPostReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostReg
+        );
+    }
+
+    /**
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
+     * 
+     * @return void
+     */
+    public function testIncompatibleTagHandlerRegistration()
+    {
+        $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
+        $tagPreReg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPreReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPreReg
+        );
+
+        $this->assertFalse(
+            Tag::registerTagHandler('var', __NAMESPACE__ . '\TagTest')
+        );
+
+        $tagPostReg = Tag::createInstance('@var mixed');
+        $this->assertInstanceOf(
+            $currentHandler,
+            $tagPostReg
+        );
+        $this->assertInstanceOf(
+            __NAMESPACE__ . '\Tag',
+            $tagPostReg
+        );
+    }
+
+    /**
+     * Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can
+     * understand the @var doc block.
+     *
+     * @param string $type
+     * @param string $content
+     * @param string $exDescription
+     *
+     * @covers \phpDocumentor\Reflection\DocBlock\Tag
+     * @dataProvider provideDataForConstuctor
+     *
+     * @return void
+     */
+    public function testConstructorParesInputsIntoCorrectFields(
+        $type,
+        $content,
+        $exDescription
+    ) {
+        $tag = new Tag($type, $content);
+
+        $this->assertEquals($type, $tag->getName());
+        $this->assertEquals($content, $tag->getContent());
+        $this->assertEquals($exDescription, $tag->getDescription());
+    }
+
+    /**
+     * Data provider for testConstructorParesInputsIntoCorrectFields
+     *
+     * @return array
+     */
+    public function provideDataForConstuctor()
+    {
+        // $type, $content, $exDescription
+        return array(
+            array(
+                'unknown',
+                'some content',
+                'some content',
+            ),
+            array(
+                'unknown',
+                '',
+                '',
+            )
+        );
+    }
+}