deriveChildMetadata() public method

Used to derive a class metadata of the current instance for a mapped child class.
public deriveChildMetadata ( ClassMetadata $child )
$child ClassMetadata
 public function testDeriveChildMetadata()
 {
     $cm = new ClassMetadata("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person");
     $cm->mapField(array('fieldName' => 'id', 'id' => true));
     $cm->mapField(array('fieldName' => 'username', 'type' => 'string'));
     $cm->mapAttachments('attachments');
     $cm->mapManyToOne(array('targetDocument' => 'Address', 'fieldName' => 'address'));
     $child = new ClassMetadata('Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Employee');
     $cm->deriveChildMetadata($child);
     $child->mapField(array('fieldName' => 'status', 'type' => 'string'));
     $this->assertFalse(isset($child->fieldMappings['status']['declared']));
     $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Employee", $child->name);
     $this->assertTrue(isset($child->fieldMappings['id']), "id field has to be on child metadata");
     $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->fieldMappings['id']['declared']);
     $this->assertTrue(isset($child->fieldMappings['username']), "Username field has to be on child metadata");
     $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->fieldMappings['username']['declared']);
     $this->assertTrue(isset($child->associationsMappings['address']), "address association has to be on child metadata");
     $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->associationsMappings['address']['declared']);
     $this->assertEquals("attachments", $child->attachmentField);
     $this->assertEquals("Doctrine\\Tests\\ODM\\CouchDB\\Mapping\\Person", $child->attachmentDeclaredClass);
     return $child;
 }