/** * Test the behavior of the proxy when it is cloned : * All states must be cloned * DI Container must be cloned * Registered states must be cloned * Active states must be cloned * The cloned proxy must has a new unique id. */ public function testCloning() { $this->initializeProxy('state1', true); $obj = new \stdClass(); $obj->foo = 'bar'; $clonedProxy = clone $this->proxy; //States must be independently $this->assertEquals(array('state1', 'state2', 'state3'), $this->proxy->listAvailableStates()); $this->assertEquals(array('state1'), $this->proxy->listEnabledStates()); $this->assertEquals(array('state1', 'state2', 'state3'), $clonedProxy->listAvailableStates()); $this->assertEquals(array('state1'), $clonedProxy->listEnabledStates()); //List must perform independently $clonedProxy->switchState('state2'); $clonedProxy->unregisterState('state3'); $this->assertEquals(array('state1', 'state2', 'state3'), $this->proxy->listAvailableStates()); $this->assertEquals(array('state1'), $this->proxy->listEnabledStates()); $this->assertEquals(array('state1', 'state2'), $clonedProxy->listAvailableStates()); $this->assertEquals(array('state2'), $clonedProxy->listEnabledStates()); }