diff vendor/symfony/phpunit-bridge/ClockMock.php @ 0:4c8ae668cc8c

Initial import (non-working)
author Chris Cannam
date Wed, 29 Nov 2017 16:09:58 +0000
parents
children 1fec387a4317
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/symfony/phpunit-bridge/ClockMock.php	Wed Nov 29 16:09:58 2017 +0000
@@ -0,0 +1,114 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Bridge\PhpUnit;
+
+/**
+ * @author Nicolas Grekas <p@tchwork.com>
+ */
+class ClockMock
+{
+    private static $now;
+
+    public static function withClockMock($enable = null)
+    {
+        if (null === $enable) {
+            return null !== self::$now;
+        }
+
+        self::$now = is_numeric($enable) ? (float) $enable : ($enable ? microtime(true) : null);
+    }
+
+    public static function time()
+    {
+        if (null === self::$now) {
+            return \time();
+        }
+
+        return (int) self::$now;
+    }
+
+    public static function sleep($s)
+    {
+        if (null === self::$now) {
+            return \sleep($s);
+        }
+
+        self::$now += (int) $s;
+
+        return 0;
+    }
+
+    public static function usleep($us)
+    {
+        if (null === self::$now) {
+            return \usleep($us);
+        }
+
+        self::$now += $us / 1000000;
+    }
+
+    public static function microtime($asFloat = false)
+    {
+        if (null === self::$now) {
+            return \microtime($asFloat);
+        }
+
+        if ($asFloat) {
+            return self::$now;
+        }
+
+        return sprintf("%0.6f %d\n", self::$now - (int) self::$now, (int) self::$now);
+    }
+
+    public static function register($class)
+    {
+        $self = get_called_class();
+
+        $mockedNs = array(substr($class, 0, strrpos($class, '\\')));
+        if (0 < strpos($class, '\\Tests\\')) {
+            $ns = str_replace('\\Tests\\', '\\', $class);
+            $mockedNs[] = substr($ns, 0, strrpos($ns, '\\'));
+        } elseif (0 === strpos($class, 'Tests\\')) {
+            $mockedNs[] = substr($class, 6, strrpos($class, '\\') - 6);
+        }
+        foreach ($mockedNs as $ns) {
+            if (function_exists($ns.'\time')) {
+                continue;
+            }
+            eval(<<<EOPHP
+namespace $ns;
+
+function time()
+{
+    return \\$self::time();
+}
+
+function microtime(\$asFloat = false)
+{
+    return \\$self::microtime(\$asFloat);
+}
+
+function sleep(\$s)
+{
+    return \\$self::sleep(\$s);
+}
+
+function usleep(\$us)
+{
+    return \\$self::usleep(\$us);
+}
+
+EOPHP
+            );
+        }
+    }
+}