getNormalizer(); $this->assertEquals(array('bar' => 'bar'), $normalizer->normalize($object)); } public function testNormalizeVersionedObject() { $object = new VersionedObject('name1', 'name2'); $normalizer = $this->getNormalizer(); $this->assertEquals(array('name' => 'name2'), $normalizer->normalize($object, null)); $normalizer = $this->getNormalizer('0.1.0'); $this->assertEquals(array('name' => 'name1'), $normalizer->normalize($object, null)); $normalizer = $this->getNormalizer('1.1.0'); $this->assertEquals(array('name' => 'name2'), $normalizer->normalize($object, null)); } public function testNormalizeCircularReference() { $normalizer = $this->getNormalizer(); $object = new CircularReferenceParent(); $this->assertEquals(array( 'collection' => array( array('name' => 'child1'), array('name' => 'child2'), ), 'another_collection' => array( array('name' => 'child1'), array('name' => 'child2'), ), ), $normalizer->normalize($object, null)); } public function testNormalize() { $normalizer = $this->getNormalizer(); $object = new SimpleObject('foo', 'bar'); $this->assertEquals(array('foo' => 'foo', 'moo' => 'bar', 'camel_case' => 'boo'), $normalizer->normalize($object, null)); } protected function getNormalizer($version = null) { $driver = new AnnotationDriver(new Reader()); $propertyNamingStrategy = new SerializedNameAnnotationStrategy(new CamelCaseNamingStrategy('_')); if (null === $version) { $strategies = array( 'ALL' => new AllExclusionStrategy($reader), 'NONE' => new NoneExclusionStrategy($reader), ); } else { $versionStrategy = new VersionExclusionStrategy($version); $strategies = array( 'ALL' => new DisjunctExclusionStrategy(array( $versionStrategy, new AllExclusionStrategy($reader) )), 'NONE' => new DisjunctExclusionStrategy(array( $versionStrategy, new NoneExclusionStrategy($reader), )), ); } $exclusionStrategyFactory = new ExclusionStrategyFactory($strategies); $normalizer = new PropertyBasedNormalizer(new MetadataFactory($driver), $propertyNamingStrategy, $exclusionStrategyFactory); $serializer = new Serializer(); $serializer->addNormalizer($normalizer); return $normalizer; } }