/** * Test to select the previous, the next state machines and similar state machines work on indices * * @return void */ public function testCanSelectNextOrPreviousOrRandomIndexState() { $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>"); $this->assertEquals(0, $stateMachine->getFirstIndex()); $this->assertEquals(2, $stateMachine->getLastIndex()); $stateMachine->checkPoint(1); $this->assertEquals(false, $stateMachine->getState(0)); $this->assertEquals(1, $stateMachine->getFirstIndex()); $this->assertEquals(2, $stateMachine->getLastIndex()); $this->assertEquals(false, $stateMachine->getState(3)); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"1\" index=\"1\">First</item><item id=\"2\">Second</item></listofitems>", $stateMachine->getState(1)); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"2\">second</item><item id=\"3\">Third</item></listofitems>", $stateMachine->getState(2)); $stateMachine->addState("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"4\">fourth</item></listofitems>"); $this->assertEquals(1, $stateMachine->getFirstIndex()); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"1\" index=\"1\">First</item><item id=\"2\">Second</item></listofitems>", $stateMachine->getState($stateMachine->getFirstIndex())); $this->assertEquals(3, $stateMachine->getLastIndex()); $this->assertXmlStringEqualsXmlString("<?xml version=\"1.0\" encoding=\"utf-8\"?><listofitems><item id=\"4\">fourth</item></listofitems>", $stateMachine->getState($stateMachine->getLastIndex())); }