* * 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 PHPUnit\Framework\TestCase; use Symfony\Component\Stopwatch\Stopwatch; /** * StopwatchTest. * * @author Fabien Potencier * * @group time-sensitive */ class StopwatchTest extends 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 testMorePrecision() { $stopwatch = new Stopwatch(true); $stopwatch->start('foo'); $event = $stopwatch->stop('foo'); $this->assertInternalType('float', $event->getStartTime()); $this->assertInternalType('float', $event->getEndTime()); $this->assertInternalType('float', $event->getDuration()); } 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'); } public function testReset() { $stopwatch = new Stopwatch(); $stopwatch->openSection(); $stopwatch->start('foo', 'cat'); $stopwatch->reset(); $this->assertEquals(new Stopwatch(), $stopwatch); } } __halt_compiler();----SIGNATURE:----CuIp0+XYjS+aCfBJs8Y8o3ZlD6YRoxtJDBpE0RmKEIlpJVyq6MD5MTB5t+Jo3DofuW3mnwetAU1ux24A8CbOgZ0RDPrC2gXm0EP0L8BY6/rkGDQMBirYtzWWcF7iw9zzmZIU2YViJ79oYgoKvzeOW2b9OcySKjaBCX/9UVjmLkpRy8TkJHAZf/UXohJ6HF8qB9fGnzSWDT856G4klTMFlMzwZXbgcGdlVNLnfWvYfpYf/bK04oLsRuSnm/vMRIZiaJHfexNtqVXaD6DSSofBWQ/37TNXLU2RfNU8dn0czac/97vIpuwViJbz5Gs51Cpo2HVFAEE/2Jd6hQBI+rADZKtMX+5/t2aT47wkr8EnbSM+yOj7lL+1uGZROcjcLePGmKrxJ9B0Am2vfLvHBVCF3DP5KgJTKE0uMh8lnG2GGC1GPKF/DGndzs/sHrVqkwos5Js0ls5Fpu5weUCBhnO3Sxfwsiu82yQuUT6kHbaGRIRZMBWzmPILcUaHQbgadKOASOQ9KGs0d98/2GfpZ5AWiN2kezXgrjku/xhUwt5BWu6ltn7Hg1Rwjg9MRFol8llSVLndH7z9uvuyg4R5Fk9UgXfN5Ps0vwi1BYEWL4H9rrozmd69ZqTJHSLwueFMA1jUUy79qqD91SB3s64VBdU42/WykzyFUE8KnUIDf216i0g=----ATTACHMENT:----MTU2NDM2MDQ2MTEwMTU4MiA4NDc3NTU1MDc5MTYzOTc5IDQ2MjUyMzU0ODE1NzAwMDQ=