* * 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:----GcarmJm30jFJ9NIT5XwQRfZWKkVu0YQMV0VvY5WjtturR18E8Mt/SIohEtQCKvz4Bft2cwAU8cGS25C3zIWVGJtQKyNLO1wvGGRNi7ucnJ6AFw8H1M02lcX3u2QBWvsr5RRU4XkYJTcl8MA2aCHlrMoieBCt9TLLtm6WeDxJCsyOx0MiBV/MCKk3t/0lR4Z1UfygCgRvth9Gf7yNcy9x3fOD3/58GLfj/GbYA4/UkBacfwh1kvkUhytYqrcvrNNBehr0tnFbKmHoXjyuojpXy3Y6oNlkpToiTrIElkKPECu+qvHk/mtvG34z93I5Ebx9B+YQz4BAM779ttb8svhpewt85qd/k3fYZ7Hfs55WvKIV6CaNgzEGdz8v7lxkf4y/3J5az3R65nYVgOt1+TDkgq7XOPBbcKK2Wx3qpB+9phELd1CW3OuV/H428Doun7Xg6nqI7OcSFaSi0miu9LKaHOJahSE61txRwRCQFDXtsmdQitoF3EuQWaansSHqmYsKwdOEb9n/o91/4zcBUiCnqEx9vHSIMKX7oeFx5/GNoS2AskM4fOg3JTM2/OWsU6hxZxwxyRp2FuVHcq3Jf4t7fhqMmmr8GIJz/H/Lwfak86Rd68mCjUNcjp+DFKOvcTscj0jweTHUOWq3o3HoQIJobaLpqKQO+FOYwZVV3JX0pMk=----ATTACHMENT:----MTUwMTEzMzMyMDA3MTgyNiA2MjkxMzgxMzM2NzIyMDQ3IDY0MjY0ODQ0NTY1MDg4MDI=