Skip to content

Commit

Permalink
Allow retrieving unstopped stopwatch events
Browse files Browse the repository at this point in the history
Section:
  - added method getEvent()

Stopwatch:
  - added method getEvent()

StopwatchTest:
  - modified testStart() to test for getEvent() method
  - added testUnknownEvent()
  • Loading branch information
jochenvdv committed Feb 4, 2014
1 parent d3d097d commit 2efe461
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 0 deletions.
30 changes: 30 additions & 0 deletions src/Symfony/Component/Stopwatch/Stopwatch.php
Expand Up @@ -125,6 +125,18 @@ public function lap($name)
return end($this->activeSections)->stopEvent($name)->start();
}

/**
* Returns a specific event by name
*
* @param string $name The event name
*
* @return StopwatchEvent A StopwatchEvent instance
*/
public function getEvent($name)
{
return end($this->activeSections)->getEvent($name);
}

/**
* Gets all events for a given section.
*
Expand Down Expand Up @@ -293,6 +305,24 @@ public function lap($name)
return $this->stopEvent($name)->start();
}

/**
* Returns a specific event by name
*
* @param string $name The event name
*
* @return StopwatchEvent The event
*
* @throws \LogicException When the event is not known
*/
public function getEvent($name)
{
if (!isset($this->events[$name])) {
throw new \LogicException(sprintf('Event "%s" is not known.', $name));
}

return $this->events[$name];
}

/**
* Returns the events from this section.
*
Expand Down
10 changes: 10 additions & 0 deletions src/Symfony/Component/Stopwatch/Tests/StopwatchTest.php
Expand Up @@ -29,6 +29,7 @@ public function testStart()

$this->assertInstanceof('Symfony\Component\Stopwatch\StopwatchEvent', $event);
$this->assertEquals('cat', $event->getCategory());
$this->assertSame($event, $stopwatch->getEvent('foo'));
}

public function testIsStarted()
Expand Down Expand Up @@ -92,6 +93,15 @@ public function testLap()
$this->assertEquals(200, $event->getDuration(), null, self::DELTA);
}

/**
* @expectedException \LogicException
*/
public function testUnknownEvent()
{
$stopwatch = new Stopwatch();
$stopwatch->getEvent('foo');
}

/**
* @expectedException \LogicException
*/
Expand Down

0 comments on commit 2efe461

Please sign in to comment.