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'));
+ }
+}