Version 1
[yaffs-website] / vendor / mikey179 / vfsStream / src / test / php / org / bovigo / vfs / proxy / vfsStreamWrapperRecordingProxy.php
diff --git a/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/proxy/vfsStreamWrapperRecordingProxy.php b/vendor/mikey179/vfsStream/src/test/php/org/bovigo/vfs/proxy/vfsStreamWrapperRecordingProxy.php
new file mode 100644 (file)
index 0000000..1ed84b5
--- /dev/null
@@ -0,0 +1,325 @@
+<?php
+/**
+ * This file is part of vfsStream.
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * @package  org\bovigo\vfs
+ */
+namespace org\bovigo\vfs;
+/**
+ * Stream wrapper to mock file system requests.
+ *
+ * @since  0.10.0
+ */
+class vfsStreamWrapperRecordingProxy extends vfsStreamWrapper
+{
+    /**
+     * list of called methods for a stream
+     *
+     * @var  array
+     */
+    protected static $calledMethods = array();
+    /**
+     * currently opened path
+     *
+     * @var  string
+     */
+    protected $path;
+
+    /**
+     * records method call for given path
+     *
+     * @param  string  $method
+     * @param  string  $path
+     */
+    protected static function recordMethodCall($method, $path)
+    {
+        if (isset(self::$calledMethods[$path]) === false) {
+            self::$calledMethods[$path] = array();
+        }
+
+        self::$calledMethods[$path][] = $method;
+    }
+
+    /**
+     * returns recorded method calls for given path
+     *
+     * @param   string         $path
+     * @return  array<string>
+     */
+    public static function getMethodCalls($path)
+    {
+        if (isset(self::$calledMethods[$path]) === true) {
+            return self::$calledMethods[$path];
+        }
+
+        return array();
+    }
+
+    /**
+     * helper method for setting up vfsStream with the proxy
+     *
+     * @param   string              $rootDirName  optional  name of root directory
+     * @param   int                 $permissions  optional  file permissions of root directory
+     * @return  vfsStreamDirectory
+     * @throws  vfsStreamException
+     */
+    public static function setup($rootDirName = 'root', $permissions = null)
+    {
+        self::$root = vfsStream::newDirectory($rootDirName, $permissions);
+        if (true === self::$registered) {
+            return self::$root;
+        }
+
+        if (@stream_wrapper_register(vfsStream::SCHEME, __CLASS__) === false) {
+            throw new vfsStreamException('A handler has already been registered for the ' . vfsStream::SCHEME . ' protocol.');
+        }
+
+        self::$registered = true;
+        return self::$root;
+    }
+
+    /**
+     * open the stream
+     *
+     * @param   string  $path         the path to open
+     * @param   string  $mode         mode for opening
+     * @param   string  $options      options for opening
+     * @param   string  $opened_path  full path that was actually opened
+     * @return  bool
+     */
+    public function stream_open($path, $mode, $options, $opened_path)
+    {
+        $this->path = $path;
+        self::recordMethodCall('stream_open', $this->path);
+        return parent::stream_open($path, $mode, $options, $opened_path);
+    }
+
+    /**
+     * closes the stream
+     */
+    public function stream_close()
+    {
+        self::recordMethodCall('stream_close', $this->path);
+        return parent::stream_close();
+    }
+
+    /**
+     * read the stream up to $count bytes
+     *
+     * @param   int     $count  amount of bytes to read
+     * @return  string
+     */
+    public function stream_read($count)
+    {
+        self::recordMethodCall('stream_read', $this->path);
+        return parent::stream_read($count);
+    }
+
+    /**
+     * writes data into the stream
+     *
+     * @param   string  $data
+     * @return  int     amount of bytes written
+     */
+    public function stream_write($data)
+    {
+        self::recordMethodCall('stream_write', $this->path);
+        return parent::stream_write($data);
+    }
+
+    /**
+     * checks whether stream is at end of file
+     *
+     * @return  bool
+     */
+    public function stream_eof()
+    {
+        self::recordMethodCall('stream_eof', $this->path);
+        return parent::stream_eof();
+    }
+
+    /**
+     * returns the current position of the stream
+     *
+     * @return  int
+     */
+    public function stream_tell()
+    {
+        self::recordMethodCall('stream_tell', $this->path);
+        return parent::stream_tell();
+    }
+
+    /**
+     * seeks to the given offset
+     *
+     * @param   int   $offset
+     * @param   int   $whence
+     * @return  bool
+     */
+    public function stream_seek($offset, $whence)
+    {
+        self::recordMethodCall('stream_seek', $this->path);
+        return parent::stream_seek($offset, $whence);
+    }
+
+    /**
+     * flushes unstored data into storage
+     *
+     * @return  bool
+     */
+    public function stream_flush()
+    {
+        self::recordMethodCall('stream_flush', $this->path);
+        return parent::stream_flush();
+    }
+
+    /**
+     * returns status of stream
+     *
+     * @return  array
+     */
+    public function stream_stat()
+    {
+        self::recordMethodCall('stream_stat', $this->path);
+        return parent::stream_stat();
+    }
+
+    /**
+     * retrieve the underlaying resource
+     *
+     * @param   int  $cast_as
+     * @return  bool
+     */
+    public function stream_cast($cast_as)
+    {
+        self::recordMethodCall('stream_cast', $this->path);
+        return parent::stream_cast($cast_as);
+    }
+
+    /**
+     * set lock status for stream
+     *
+     * @param   int   $operation
+     * @return  bool
+     */
+    public function stream_lock($operation)
+    {
+        self::recordMethodCall('stream_link', $this->path);
+        return parent::stream_lock($operation);
+    }
+
+    /**
+     * remove the data under the given path
+     *
+     * @param   string  $path
+     * @return  bool
+     */
+    public function unlink($path)
+    {
+        self::recordMethodCall('unlink', $path);
+        return parent::unlink($path);
+    }
+
+    /**
+     * rename from one path to another
+     *
+     * @param   string  $path_from
+     * @param   string  $path_to
+     * @return  bool
+     */
+    public function rename($path_from, $path_to)
+    {
+        self::recordMethodCall('rename', $path_from);
+        return parent::rename($path_from, $path_to);
+    }
+
+    /**
+     * creates a new directory
+     *
+     * @param   string  $path
+     * @param   int     $mode
+     * @param   int     $options
+     * @return  bool
+     */
+    public function mkdir($path, $mode, $options)
+    {
+        self::recordMethodCall('mkdir', $path);
+        return parent::mkdir($path, $mode, $options);
+    }
+
+    /**
+     * removes a directory
+     *
+     * @param   string  $path
+     * @param   int     $options
+     * @return  bool
+     */
+    public function rmdir($path, $options)
+    {
+        self::recordMethodCall('rmdir', $path);
+        return parent::rmdir($path, $options);
+    }
+
+    /**
+     * opens a directory
+     *
+     * @param   string  $path
+     * @param   int     $options
+     * @return  bool
+     */
+    public function dir_opendir($path, $options)
+    {
+        $this->path = $path;
+        self::recordMethodCall('dir_opendir', $this->path);
+        return parent::dir_opendir($path, $options);
+    }
+
+    /**
+     * reads directory contents
+     *
+     * @return  string
+     */
+    public function dir_readdir()
+    {
+        self::recordMethodCall('dir_readdir', $this->path);
+        return parent::dir_readdir();
+    }
+
+    /**
+     * reset directory iteration
+     *
+     * @return  bool
+     */
+    public function dir_rewinddir()
+    {
+        self::recordMethodCall('dir_rewinddir', $this->path);
+        return parent::dir_rewinddir();
+    }
+
+    /**
+     * closes directory
+     *
+     * @return  bool
+     */
+    public function dir_closedir()
+    {
+        self::recordMethodCall('dir_closedir', $this->path);
+        return parent::dir_closedir();
+    }
+
+    /**
+     * returns status of url
+     *
+     * @param   string  $path   path of url to return status for
+     * @param   int     $flags  flags set by the stream API
+     * @return  array
+     */
+    public function url_stat($path, $flags)
+    {
+        self::recordMethodCall('url_stat', $path);
+        return parent::url_stat($path, $flags);
+    }
+}