3 * phpDocumentor Var Tag Test
7 * @author Daniel O'Connor <daniel.oconnor@gmail.com>
8 * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
9 * @license http://www.opensource.org/licenses/mit-license.php MIT
10 * @link http://phpdoc.org
13 namespace phpDocumentor\Reflection\DocBlock;
15 use phpDocumentor\Reflection\DocBlock;
16 use phpDocumentor\Reflection\DocBlock\Context;
19 * Test class for \phpDocumentor\Reflection\DocBlock\Tag\VarTag
21 * @author Daniel O'Connor <daniel.oconnor@gmail.com>
22 * @copyright 2010-2011 Mike van Riel / Naenius. (http://www.naenius.com)
23 * @license http://www.opensource.org/licenses/mit-license.php MIT
24 * @link http://phpdoc.org
26 class TagTest extends \PHPUnit_Framework_TestCase
30 * @expectedException \InvalidArgumentException
34 public function testInvalidTagLine()
36 Tag::createInstance('Invalid tag line');
40 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
44 public function testTagHandlerUnregistration()
46 $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
47 $tagPreUnreg = Tag::createInstance('@var mixed');
48 $this->assertInstanceOf(
52 $this->assertInstanceOf(
53 __NAMESPACE__ . '\Tag',
57 Tag::registerTagHandler('var', null);
59 $tagPostUnreg = Tag::createInstance('@var mixed');
60 $this->assertNotInstanceOf(
64 $this->assertInstanceOf(
65 __NAMESPACE__ . '\Tag',
69 Tag::registerTagHandler('var', $currentHandler);
73 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
77 public function testTagHandlerCorrectRegistration()
79 if (0 == ini_get('allow_url_include')) {
80 $this->markTestSkipped('"data" URIs for includes are required.');
82 $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
83 $tagPreReg = Tag::createInstance('@var mixed');
84 $this->assertInstanceOf(
88 $this->assertInstanceOf(
89 __NAMESPACE__ . '\Tag',
93 include 'data:text/plain;base64,'. base64_encode(
96 class MyTagHandler extends \phpDocumentor\Reflection\DocBlock\Tag {}
100 $this->assertTrue(Tag::registerTagHandler('var', '\MyTagHandler'));
102 $tagPostReg = Tag::createInstance('@var mixed');
103 $this->assertNotInstanceOf(
107 $this->assertInstanceOf(
108 __NAMESPACE__ . '\Tag',
111 $this->assertInstanceOf(
116 $this->assertTrue(Tag::registerTagHandler('var', $currentHandler));
120 * @depends testTagHandlerCorrectRegistration
121 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
122 * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance
126 public function testNamespacedTagHandlerCorrectRegistration()
128 $tagPreReg = Tag::createInstance('@T something');
129 $this->assertInstanceOf(
130 __NAMESPACE__ . '\Tag',
133 $this->assertNotInstanceOf(
139 Tag::registerTagHandler('\MyNamespace\MyTag', '\MyTagHandler')
142 $tagPostReg = Tag::createInstance(
146 new Context('', array('T' => '\MyNamespace\MyTag'))
149 $this->assertInstanceOf(
150 __NAMESPACE__ . '\Tag',
153 $this->assertInstanceOf(
159 Tag::registerTagHandler('\MyNamespace\MyTag', null)
164 * @depends testTagHandlerCorrectRegistration
165 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
166 * @covers \phpDocumentor\Reflection\DocBlock\Tag::createInstance
170 public function testNamespacedTagHandlerIncorrectRegistration()
172 $tagPreReg = Tag::createInstance('@T something');
173 $this->assertInstanceOf(
174 __NAMESPACE__ . '\Tag',
177 $this->assertNotInstanceOf(
183 Tag::registerTagHandler('MyNamespace\MyTag', '\MyTagHandler')
186 $tagPostReg = Tag::createInstance(
190 new Context('', array('T' => '\MyNamespace\MyTag'))
193 $this->assertInstanceOf(
194 __NAMESPACE__ . '\Tag',
197 $this->assertNotInstanceOf(
204 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
208 public function testNonExistentTagHandlerRegistration()
210 $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
211 $tagPreReg = Tag::createInstance('@var mixed');
212 $this->assertInstanceOf(
216 $this->assertInstanceOf(
217 __NAMESPACE__ . '\Tag',
221 $this->assertFalse(Tag::registerTagHandler('var', 'Non existent'));
223 $tagPostReg = Tag::createInstance('@var mixed');
224 $this->assertInstanceOf(
228 $this->assertInstanceOf(
229 __NAMESPACE__ . '\Tag',
235 * @covers \phpDocumentor\Reflection\DocBlock\Tag::registerTagHandler
239 public function testIncompatibleTagHandlerRegistration()
241 $currentHandler = __NAMESPACE__ . '\Tag\VarTag';
242 $tagPreReg = Tag::createInstance('@var mixed');
243 $this->assertInstanceOf(
247 $this->assertInstanceOf(
248 __NAMESPACE__ . '\Tag',
253 Tag::registerTagHandler('var', __NAMESPACE__ . '\TagTest')
256 $tagPostReg = Tag::createInstance('@var mixed');
257 $this->assertInstanceOf(
261 $this->assertInstanceOf(
262 __NAMESPACE__ . '\Tag',
268 * Test that the \phpDocumentor\Reflection\DocBlock\Tag\VarTag can
269 * understand the @var doc block.
271 * @param string $type
272 * @param string $content
273 * @param string $exDescription
275 * @covers \phpDocumentor\Reflection\DocBlock\Tag
276 * @dataProvider provideDataForConstuctor
280 public function testConstructorParesInputsIntoCorrectFields(
285 $tag = new Tag($type, $content);
287 $this->assertEquals($type, $tag->getName());
288 $this->assertEquals($content, $tag->getContent());
289 $this->assertEquals($exDescription, $tag->getDescription());
293 * Data provider for testConstructorParesInputsIntoCorrectFields
297 public function provideDataForConstuctor()
299 // $type, $content, $exDescription