public function testStartStop() { $helper = new SlotsHelper(); $helper->start('bar'); echo 'foo'; $helper->stop(); $this->assertEquals('foo', $helper->get('bar'), '->start() starts a slot'); $this->assertTrue($helper->has('bar'), '->starts() starts a slot'); $helper->start('bar'); try { $helper->start('bar'); $helper->stop(); $this->fail('->start() throws an InvalidArgumentException if a slot with the same name is already started'); } catch (\Exception $e) { $helper->stop(); $this->assertInstanceOf('\\InvalidArgumentException', $e, '->start() throws an InvalidArgumentException if a slot with the same name is already started'); $this->assertEquals('A slot named "bar" is already started.', $e->getMessage(), '->start() throws an InvalidArgumentException if a slot with the same name is already started'); } try { $helper->stop(); $this->fail('->stop() throws an LogicException if no slot is started'); } catch (\Exception $e) { $this->assertInstanceOf('\\LogicException', $e, '->stop() throws an LogicException if no slot is started'); $this->assertEquals('No slot started.', $e->getMessage(), '->stop() throws an LogicException if no slot is started'); } }