public function testClassMetadataInstanceSerialization() { $cm = new ClassMetadata('Doctrine\\Tests\\Models\\CMS\\CmsUser'); $cm->initializeReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService()); // Test initial state $this->assertTrue(count($cm->getReflectionProperties()) == 0); $this->assertInstanceOf('ReflectionClass', $cm->reflClass); $this->assertEquals('Doctrine\\Tests\\Models\\CMS\\CmsUser', $cm->name); $this->assertEquals(array(), $cm->parentClasses); $this->assertEquals(0, count($cm->referenceMappings)); // Customize state $cm->setParentClasses(array("UserParent")); $cm->setCustomRepositoryClassName("CmsUserRepository"); $cm->setNodeType('foo:bar'); $cm->mapManyToOne(array('fieldName' => 'address', 'targetDocument' => 'CmsAddress', 'mappedBy' => 'foo')); $this->assertEquals(1, count($cm->referenceMappings)); $serialized = serialize($cm); /** @var ClassMetadata $cm */ $cm = unserialize($serialized); $cm->wakeupReflection(new \Doctrine\Common\Persistence\Mapping\RuntimeReflectionService()); // Check state $this->assertTrue(count($cm->getReflectionProperties()) > 0); $this->assertEquals('Doctrine\\Tests\\Models\\CMS', $cm->namespace); $this->assertInstanceOf('ReflectionClass', $cm->reflClass); $this->assertEquals('Doctrine\\Tests\\Models\\CMS\\CmsUser', $cm->name); $this->assertEquals(array('UserParent'), $cm->parentClasses); $this->assertEquals('Doctrine\\Tests\\Models\\CMS\\CmsUserRepository', $cm->customRepositoryClassName); $this->assertEquals('foo:bar', $cm->getNodeType()); $this->assertEquals(ClassMetadata::MANY_TO_ONE, $cm->getTypeOfField('address')); $this->assertEquals(1, count($cm->referenceMappings)); $this->assertTrue($cm->hasAssociation('address')); $this->assertEquals('Doctrine\\Tests\\Models\\CMS\\CmsAddress', $cm->getAssociationTargetClass('address')); }