/** * Test for to set check point and forget all previous state of state machine * * @return void */ public function testShouldBeAbleToSetCheckpointAndForgetAllPreviousStatesOfAMachine() { $stateMachine = new StateMachine(); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"1\" index=\"1\">First</item><item id=\"2\">Second</item></listofitems>"); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"2\">second</item><item id=\"3\">Third</item></listofitems>"); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"1\" index=\"1\">First</item><item id=\"2\">Second</item></listofitems>"); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"4\">Fourth</item></listofitems>"); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"2\">second</item><item id=\"3\">Third</item></listofitems>"); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"2\">second</item><item id=\"3\">Third</item></listofitems>", $stateMachine->getCurrentState()); $stateMachine->checkPoint(2); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"2\">second</item><item id=\"3\">Third</item></listofitems>", $stateMachine->getState($stateMachine->getFirstIndex())); $stateMachine->checkPoint(4); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" ?><listofitems><item id=\"4\">Fourth</item></listofitems>", $stateMachine->getState($stateMachine->getFirstIndex())); }