diff --git a/src/Symfony/Bridge/PhpUnit/ClockMock.php b/src/Symfony/Bridge/PhpUnit/ClockMock.php index 40ed8ecc0e454..50bea0bd49ef2 100644 --- a/src/Symfony/Bridge/PhpUnit/ClockMock.php +++ b/src/Symfony/Bridge/PhpUnit/ClockMock.php @@ -13,6 +13,7 @@ /** * @author Nicolas Grekas + * @author Dominic Tubach */ class ClockMock { @@ -69,6 +70,15 @@ public static function microtime($asFloat = false) return sprintf('%0.6f %d', self::$now - (int) self::$now, (int) self::$now); } + public static function date($format, $timestamp = null) + { + if (null === $timestamp) { + $timestamp = self::time(); + } + + return \date($format, $timestamp); + } + public static function register($class) { $self = get_called_class(); @@ -107,6 +117,11 @@ function usleep(\$us) return \\$self::usleep(\$us); } +function date(\$format, \$timestamp = null) +{ + return \\$self::date(\$format, \$timestamp); +} + EOPHP ); } diff --git a/src/Symfony/Bridge/PhpUnit/Tests/ClockMockTest.php b/src/Symfony/Bridge/PhpUnit/Tests/ClockMockTest.php new file mode 100644 index 0000000000000..01a6f39775958 --- /dev/null +++ b/src/Symfony/Bridge/PhpUnit/Tests/ClockMockTest.php @@ -0,0 +1,65 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Bridge\PhpUnit\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Bridge\PhpUnit\ClockMock; + +/** + * @author Dominic Tubach + * + * @covers \Symfony\Bridge\PhpUnit\ClockMock + */ +class ClockMockTest extends TestCase +{ + public static function setUpBeforeClass() + { + ClockMock::register(__CLASS__); + } + + protected function setUp() + { + ClockMock::withClockMock(1234567890.125); + } + + public function testTime() + { + $this->assertSame(1234567890, time()); + } + + public function testSleep() + { + sleep(2); + $this->assertSame(1234567892, time()); + } + + public function testMicrotime() + { + $this->assertSame('0.125000 1234567890', microtime()); + } + + public function testMicrotimeAsFloat() + { + $this->assertSame(1234567890.125, microtime(true)); + } + + public function testUsleep() + { + usleep(2); + $this->assertSame(1234567890.125002, microtime(true)); + } + + public function testDate() + { + $this->assertSame('1234567890', date('U')); + } +}