izzum\statemachine\loader\ArrayLoaderTest::shouldAddRegexesLoaderOnlyWhenStatesAreSet PHP Метод

shouldAddRegexesLoaderOnlyWhenStatesAreSet() публичный Метод

    public function shouldAddRegexesLoaderOnlyWhenStatesAreSet()
    {
        $context = new Context(new Identifier(Identifier::NULL_ENTITY_ID, Identifier::NULL_STATEMACHINE));
        $machine = new StateMachine($context);
        $transitions = array();
        $s1 = new State("1");
        $s2 = new State("2");
        $s3 = new State("3");
        //many to many
        $transitions[] = new Transition(new State('regex:/.*/'), new State('regex:/.*/'));
        $loader = new LoaderArray($transitions);
        $this->assertEquals(count($transitions), $loader->count());
        $this->assertEquals(1, $loader->count());
        $this->assertEquals(0, count($machine->getStates()));
        $this->assertEquals(0, count($machine->getTransitions()));
        $count = $loader->load($machine);
        $this->assertEquals(0, $count, 'nothing because there are no known states');
        $this->assertTrue($machine->addState($s1));
        $this->assertTrue($machine->addState($s2));
        $this->assertTrue($machine->addState($s3));
        $this->assertEquals(3, count($machine->getStates()));
        $this->assertFalse($machine->addState($s1));
        $this->assertFalse($machine->addState($s2));
        $this->assertFalse($machine->addState($s3));
        $this->assertEquals(3, count($machine->getStates()));
        $count = $loader->load($machine);
        $this->assertEquals(6, count($machine->getTransitions()));
        $this->assertEquals(6, $count, 'regexes have matched all states and created a mesh');
        $count = $loader->load($machine);
        $this->assertEquals(0, $count, 'transitions are not added since they have already been added');
        $this->assertEquals(3, count($machine->getStates()));
        $this->assertEquals(6, count($machine->getTransitions()));
    }