public function testMarking() { $marking = new Marking(array('a' => 1)); $this->assertTrue($marking->has('a')); $this->assertFalse($marking->has('b')); $this->assertSame(array('a' => 1), $marking->getPlaces()); $marking->mark('b'); $this->assertTrue($marking->has('a')); $this->assertTrue($marking->has('b')); $this->assertSame(array('a' => 1, 'b' => 1), $marking->getPlaces()); $marking->unmark('a'); $this->assertFalse($marking->has('a')); $this->assertTrue($marking->has('b')); $this->assertSame(array('b' => 1), $marking->getPlaces()); $marking->unmark('b'); $this->assertFalse($marking->has('a')); $this->assertFalse($marking->has('b')); $this->assertSame(array(), $marking->getPlaces()); }
private function leave($subject, Transition $transition, Marking $marking) { if (null !== $this->dispatcher) { $event = new Event($subject, $marking, $transition); $this->dispatcher->dispatch('workflow.leave', $event); $this->dispatcher->dispatch(sprintf('workflow.%s.leave', $this->name), $event); } foreach ($transition->getFroms() as $place) { $marking->unmark($place); if (null !== $this->dispatcher) { $this->dispatcher->dispatch(sprintf('workflow.%s.leave.%s', $this->name, $place), $event); } } }