public function test_subscribe_and_unsubscribe() { $eventer = new Eventer(); $eventer->subscribe('foo', 'foo'); $subscription = $eventer->subscribe('foo', 'bar'); $eventer->subscribe('foo', 'baz'); $this->assertTrue($subscription instanceof IEventSubscription); $this->assertEquals(3, count($eventer->getSubscriptions())); $this->assertEquals('foo', $eventer->getSubscriptions()[0]->getSubscriber()); $this->assertEquals('bar', $eventer->getSubscriptions()[1]->getSubscriber()); $this->assertEquals('baz', $eventer->getSubscriptions()[2]->getSubscriber()); $this->assertTrue($eventer->getSubscriptions()[0]->getId() != $eventer->getSubscriptions()[1]->getId()); $this->assertTrue($eventer->getSubscriptions()[0]->getId() != $eventer->getSubscriptions()[2]->getId()); $this->assertTrue($eventer->getSubscriptions()[1]->getId() != $eventer->getSubscriptions()[2]->getId()); $eventer->unsubscribe($subscription); $this->assertEquals(3, count($eventer->getSubscriptions())); $this->assertNull($eventer->getSubscriptions()[1]); }