123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155 |
- <?php
- /*
- * This file is part of the Symfony package.
- *
- * (c) Fabien Potencier <fabien@symfony.com>
- *
- * For the full copyright and license information, please view the LICENSE
- * file that was distributed with this source code.
- */
- namespace Symfony\Component\Stopwatch\Tests;
- use Symfony\Component\Stopwatch\Stopwatch;
- /**
- * StopwatchTest.
- *
- * @author Fabien Potencier <fabien@symfony.com>
- *
- * @group time-sensitive
- */
- class StopwatchTest extends \PHPUnit_Framework_TestCase
- {
- const DELTA = 20;
- public function testStart()
- {
- $stopwatch = new Stopwatch();
- $event = $stopwatch->start('foo', 'cat');
- $this->assertInstanceOf('Symfony\Component\Stopwatch\StopwatchEvent', $event);
- $this->assertEquals('cat', $event->getCategory());
- $this->assertSame($event, $stopwatch->getEvent('foo'));
- }
- public function testIsStarted()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->start('foo', 'cat');
- $this->assertTrue($stopwatch->isStarted('foo'));
- }
- public function testIsNotStarted()
- {
- $stopwatch = new Stopwatch();
- $this->assertFalse($stopwatch->isStarted('foo'));
- }
- public function testIsNotStartedEvent()
- {
- $stopwatch = new Stopwatch();
- $sections = new \ReflectionProperty('Symfony\Component\Stopwatch\Stopwatch', 'sections');
- $sections->setAccessible(true);
- $section = $sections->getValue($stopwatch);
- $events = new \ReflectionProperty('Symfony\Component\Stopwatch\Section', 'events');
- $events->setAccessible(true);
- $stopwatchMockEvent = $this->getMockBuilder('Symfony\Component\Stopwatch\StopwatchEvent')
- ->setConstructorArgs(array(microtime(true) * 1000))
- ->getMock()
- ;
- $events->setValue(end($section), array('foo' => $stopwatchMockEvent));
- $this->assertFalse($stopwatch->isStarted('foo'));
- }
- public function testStop()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->start('foo', 'cat');
- usleep(200000);
- $event = $stopwatch->stop('foo');
- $this->assertInstanceOf('Symfony\Component\Stopwatch\StopwatchEvent', $event);
- $this->assertEquals(200, $event->getDuration(), null, self::DELTA);
- }
- /**
- * @expectedException \LogicException
- */
- public function testUnknownEvent()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->getEvent('foo');
- }
- /**
- * @expectedException \LogicException
- */
- public function testStopWithoutStart()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->stop('foo');
- }
- public function testSection()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->openSection();
- $stopwatch->start('foo', 'cat');
- $stopwatch->stop('foo');
- $stopwatch->start('bar', 'cat');
- $stopwatch->stop('bar');
- $stopwatch->stopSection('1');
- $stopwatch->openSection();
- $stopwatch->start('foobar', 'cat');
- $stopwatch->stop('foobar');
- $stopwatch->stopSection('2');
- $stopwatch->openSection();
- $stopwatch->start('foobar', 'cat');
- $stopwatch->stop('foobar');
- $stopwatch->stopSection('0');
- // the section is an event by itself
- $this->assertCount(3, $stopwatch->getSectionEvents('1'));
- $this->assertCount(2, $stopwatch->getSectionEvents('2'));
- $this->assertCount(2, $stopwatch->getSectionEvents('0'));
- }
- public function testReopenASection()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->openSection();
- $stopwatch->start('foo', 'cat');
- $stopwatch->stopSection('section');
- $stopwatch->openSection('section');
- $stopwatch->start('bar', 'cat');
- $stopwatch->stopSection('section');
- $events = $stopwatch->getSectionEvents('section');
- $this->assertCount(3, $events);
- $this->assertCount(2, $events['__section__']->getPeriods());
- }
- /**
- * @expectedException \LogicException
- */
- public function testReopenANewSectionShouldThrowAnException()
- {
- $stopwatch = new Stopwatch();
- $stopwatch->openSection('section');
- }
- }
|