getInstance() public method

public getInstance ( )
Beispiel #1
0
 public function testDelegatesImmutabilityToTheDecoratedObject()
 {
     // Case where the decorated object is mutable
     $decoratedObject = new SimpleObject('dummy', $instance = new \stdClass());
     $object = new CompleteObject($decoratedObject);
     $instance->foo = 'bar';
     $object->getInstance()->foz = 'baz';
     $clone = clone $object;
     $instance->fao = 'bor';
     $clone->getInstance()->faz = 'boz';
     $this->assertEquals(StdClassFactory::create(['foo' => 'bar', 'foz' => 'baz', 'fao' => 'bor', 'faz' => 'boz']), $object->getInstance());
     $this->assertEquals($object->getInstance(), $clone->getInstance());
     // Case where the decorated object is partially immutable: cloning does create a new instance
     $decoratedObject = new ImmutableByCloneObject('dummy', $instance = new \stdClass());
     $object = new CompleteObject($decoratedObject);
     $instance->foo = 'bar';
     $object->getInstance()->foz = 'baz';
     $clone = clone $object;
     $instance->fao = 'bor';
     $clone->getInstance()->faz = 'boz';
     $this->assertEquals(StdClassFactory::create(['foo' => 'bar', 'foz' => 'baz', 'fao' => 'bor']), $object->getInstance());
     $this->assertEquals(StdClassFactory::create(['foo' => 'bar', 'foz' => 'baz', 'faz' => 'boz']), $clone->getInstance());
     // Case where the decorated object is truly immutable
     $decoratedObject = new ImmutableObject('dummy', $instance = new \stdClass());
     $object = new CompleteObject($decoratedObject);
     $instance->foo = 'bar';
     $object->getInstance()->foz = 'baz';
     $clone = clone $object;
     $instance->fao = 'bor';
     $clone->getInstance()->faz = 'boz';
     $this->assertEquals(new \stdClass(), $object->getInstance());
     $this->assertEquals(new \stdClass(), $clone->getInstance());
 }