* * 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\StopwatchEvent; /** * StopwatchEventTest. * * @author Fabien Potencier * * @group time-sensitive */ class StopwatchEventTest extends TestCase { const DELTA = 37; public function testGetOrigin() { $event = new StopwatchEvent(12); $this->assertEquals(12, $event->getOrigin()); } public function testGetCategory() { $event = new StopwatchEvent(microtime(true) * 1000); $this->assertEquals('default', $event->getCategory()); $event = new StopwatchEvent(microtime(true) * 1000, 'cat'); $this->assertEquals('cat', $event->getCategory()); } public function testGetPeriods() { $event = new StopwatchEvent(microtime(true) * 1000); $this->assertEquals(array(), $event->getPeriods()); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); $event->stop(); $this->assertCount(1, $event->getPeriods()); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); $event->stop(); $event->start(); $event->stop(); $this->assertCount(2, $event->getPeriods()); } public function testLap() { $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); $event->lap(); $event->stop(); $this->assertCount(2, $event->getPeriods()); } public function testDuration() { $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(200000); $event->stop(); $this->assertEquals(200, $event->getDuration(), null, self::DELTA); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(100000); $event->stop(); usleep(50000); $event->start(); usleep(100000); $event->stop(); $this->assertEquals(200, $event->getDuration(), null, self::DELTA); } public function testDurationBeforeStop() { $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(200000); $this->assertEquals(200, $event->getDuration(), null, self::DELTA); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(100000); $event->stop(); usleep(50000); $event->start(); usleep(100000); $this->assertEquals(100, $event->getDuration(), null, self::DELTA); } /** * @expectedException \LogicException */ public function testStopWithoutStart() { $event = new StopwatchEvent(microtime(true) * 1000); $event->stop(); } public function testIsStarted() { $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); $this->assertTrue($event->isStarted()); } public function testIsNotStarted() { $event = new StopwatchEvent(microtime(true) * 1000); $this->assertFalse($event->isStarted()); } public function testEnsureStopped() { // this also test overlap between two periods $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(100000); $event->start(); usleep(100000); $event->ensureStopped(); $this->assertEquals(300, $event->getDuration(), null, self::DELTA); } public function testStartTime() { $event = new StopwatchEvent(microtime(true) * 1000); $this->assertLessThanOrEqual(0.5, $event->getStartTime()); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); $event->stop(); $this->assertLessThanOrEqual(1, $event->getStartTime()); $event = new StopwatchEvent(microtime(true) * 1000); $event->start(); usleep(100000); $event->stop(); $this->assertEquals(0, $event->getStartTime(), null, self::DELTA); } /** * @expectedException \InvalidArgumentException */ public function testInvalidOriginThrowsAnException() { new StopwatchEvent('abc'); } public function testHumanRepresentation() { $event = new StopwatchEvent(microtime(true) * 1000); $this->assertEquals('default: 0.00 MiB - 0 ms', (string) $event); $event->start(); $event->stop(); $this->assertEquals(1, preg_match('/default: [0-9\.]+ MiB - [0-9]+ ms/', (string) $event)); $event = new StopwatchEvent(microtime(true) * 1000, 'foo'); $this->assertEquals('foo: 0.00 MiB - 0 ms', (string) $event); } } __halt_compiler();----SIGNATURE:----otqIEQuHQuUY6m6gefI4KsfhcM+NcGzDj44A7xmO3uvcjYBljnfs2PAbQKSkhc/NRXjiKkXALXEO1b6Q8xCAlRANVvQsqDV6jOt1ZsmI3Avc/RB7z5Up7DvLLySMrY3HYWSmdwOvVhJml8ZFTiUXpdRIt02GZJP6cKjkbUA4Qtj3VAuDzuzcfji/OfcF/RD8wGHcXXisix6BwhqGZEADDWeFfh7p9aoj8dBRS4M3BdhWd9X/A2ohD3oYigq9QLbS+ymuapwPd1o4/LyTD69OJkKPg3sU7vvLEhwtt7OeLYex7cPLLk1UzeXxIpqkRvIIdVzS1JEUfmgAuOnwPgOCMViZPx3sCFaG6ehwDutlCEXyVLKE7XMf6XUpeFR8jkMOePRdRROl43tTc7GqXItdsBSmdPKy73PijlIh5oRczSvhgiFuSl08GyePACC8ICoPaKPaSm4rBMLeSQcs3SGwJ4IvZG8MzUXdbeiJnpv72Spz03vf/zR9XAikr7U7zWc69ntvijeurkwLlyY8AH2nFLHYX5Ba58QNScbYnAC/Yuwx1Bp+rUdjEpXkMEQ7DCTS78Hd5cKt6blsZG1dt7hSG94thJgfblCcTwkENe37hRhsIgM5+IBwiHszFp/geSpY5IyOKqP8PSjVA1m9HTA4qagfKNoSOx7qr+vkeqbSYMI=----ATTACHMENT:----NjA2MDU5ODQ3MzM1MjQ5MiA1NDEyNTI3NzIyODYwMjYwIDI0MjM4OTgyNDcxNDE0MjE=