public function DocParserTest::testBasicAnnotations

File

drupal/core/vendor/doctrine/common/tests/Doctrine/Tests/Common/Annotations/DocParserTest.php, line 36

Class

DocParserTest

Namespace

Doctrine\Tests\Common\Annotations

Code

public function testBasicAnnotations() {
  $parser = $this
    ->createTestParser();

  // Marker annotation
  $result = $parser
    ->parse("@Name");
  $annot = $result[0];
  $this
    ->assertTrue($annot instanceof Name);
  $this
    ->assertNull($annot->value);
  $this
    ->assertNull($annot->foo);

  // Associative arrays
  $result = $parser
    ->parse('@Name(foo={"key1" = "value1"})');
  $annot = $result[0];
  $this
    ->assertNull($annot->value);
  $this
    ->assertTrue(is_array($annot->foo));
  $this
    ->assertTrue(isset($annot->foo['key1']));

  // Numerical arrays
  $result = $parser
    ->parse('@Name({2="foo", 4="bar"})');
  $annot = $result[0];
  $this
    ->assertTrue(is_array($annot->value));
  $this
    ->assertEquals('foo', $annot->value[2]);
  $this
    ->assertEquals('bar', $annot->value[4]);
  $this
    ->assertFalse(isset($annot->value[0]));
  $this
    ->assertFalse(isset($annot->value[1]));
  $this
    ->assertFalse(isset($annot->value[3]));

  // Multiple values
  $result = $parser
    ->parse('@Name(@Name, @Name)');
  $annot = $result[0];
  $this
    ->assertTrue($annot instanceof Name);
  $this
    ->assertTrue(is_array($annot->value));
  $this
    ->assertTrue($annot->value[0] instanceof Name);
  $this
    ->assertTrue($annot->value[1] instanceof Name);

  // Multiple types as values
  $result = $parser
    ->parse('@Name(foo="Bar", @Name, {"key1"="value1", "key2"="value2"})');
  $annot = $result[0];
  $this
    ->assertTrue($annot instanceof Name);
  $this
    ->assertTrue(is_array($annot->value));
  $this
    ->assertTrue($annot->value[0] instanceof Name);
  $this
    ->assertTrue(is_array($annot->value[1]));
  $this
    ->assertEquals('value1', $annot->value[1]['key1']);
  $this
    ->assertEquals('value2', $annot->value[1]['key2']);

  // Complete docblock
  $docblock = <<<DOCBLOCK
/**
 * Some nifty class.
 *
 * @author Mr.X
 * @Name(foo="bar")
 */
DOCBLOCK;
  $result = $parser
    ->parse($docblock);
  $this
    ->assertEquals(1, count($result));
  $annot = $result[0];
  $this
    ->assertTrue($annot instanceof Name);
  $this
    ->assertEquals("bar", $annot->foo);
  $this
    ->assertNull($annot->value);
}