* * 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:----o10qVflmh4lgR20+XF7JsdIifs6S59Dks15PUglIUhfUrZia/1sUWtqX74Nw5e7cyBqiD9kDOvR2jHXaPGqBVBQlj1nlKsQ7ct44ol5gZ0cIY2RcBxqxIwXe+B3lN6wxlVvODnZARkwLDMSdVe+FkYt6s0HOZBFSzkxtwYPo+nQIqnZNitIXXFb7MdKyo4mwxIxEvyWEN1tOQ0hCNnjd8zi8ICAIKvh6/KU9fL3WKI1VLNsN6OCaeDbD0WYueeymxb3t5i16ZmCjGEfjBu3e4Naqiw/+FHQVC2JJ2+q2WH+Np4WyX9G0mb44qMHRpZIfheKC/2pcVpuNW1SRFClEIExVXdPn9YoyynYKdxVrnE5h6FJylYQNaA5qGDf/CqEayjG3gqKkB4aN4uL9ck9ltjRyFG9KISVG4vQj2LVb/wkUbWOw0WOOhAPDqjoiPLgwupoUYhpvdL8QITtAWLCQWhxBpRWxesHgDHi3oxGSHwV64vrdKS2VbidEZxYjBycPWXrwZG93c69/hQRqAmkzruCmLUoHFZEf2rWONgFWmvlMvwkYOc/KP2+riXEX4lLGxUdUpceZMPk13tNjpLx1Dg5eXguRPuC++L0rlB4LeCiLlbU2aq17zwG8R8vjIZ3CudgX7EQlP4+kYlTNFL3ehRrvh9OtUDbs1VdZWcrhwUo=----ATTACHMENT:----ODA2NDE3MDY4NDAyODIwOSA1NjI0MzI3ODEwOTQwMjk0IDUyOTcyNTgzNDg3MDUxOTU=