Yaffs site version 1.1
[yaffs-website] / vendor / symfony / finder / Tests / Iterator / MockSplFileInfo.php
diff --git a/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php b/vendor/symfony/finder/Tests/Iterator/MockSplFileInfo.php
new file mode 100644 (file)
index 0000000..d03a9ac
--- /dev/null
@@ -0,0 +1,132 @@
+<?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\Component\Finder\Tests\Iterator;
+
+class MockSplFileInfo extends \SplFileInfo
+{
+    const   TYPE_DIRECTORY = 1;
+    const   TYPE_FILE = 2;
+    const   TYPE_UNKNOWN = 3;
+
+    private $contents = null;
+    private $mode = null;
+    private $type = null;
+    private $relativePath = null;
+    private $relativePathname = null;
+
+    public function __construct($param)
+    {
+        if (is_string($param)) {
+            parent::__construct($param);
+        } elseif (is_array($param)) {
+            $defaults = array(
+              'name' => 'file.txt',
+              'contents' => null,
+              'mode' => null,
+              'type' => null,
+              'relativePath' => null,
+              'relativePathname' => null,
+            );
+            $defaults = array_merge($defaults, $param);
+            parent::__construct($defaults['name']);
+            $this->setContents($defaults['contents']);
+            $this->setMode($defaults['mode']);
+            $this->setType($defaults['type']);
+            $this->setRelativePath($defaults['relativePath']);
+            $this->setRelativePathname($defaults['relativePathname']);
+        } else {
+            throw new \RuntimeException(sprintf('Incorrect parameter "%s"', $param));
+        }
+    }
+
+    public function isFile()
+    {
+        if (null === $this->type) {
+            return false !== strpos($this->getFilename(), 'file');
+        }
+
+        return self::TYPE_FILE === $this->type;
+    }
+
+    public function isDir()
+    {
+        if (null === $this->type) {
+            return false !== strpos($this->getFilename(), 'directory');
+        }
+
+        return self::TYPE_DIRECTORY === $this->type;
+    }
+
+    public function isReadable()
+    {
+        if (null === $this->mode) {
+            return preg_match('/r\+/', $this->getFilename());
+        }
+
+        return preg_match('/r\+/', $this->mode);
+    }
+
+    public function getContents()
+    {
+        return $this->contents;
+    }
+
+    public function setContents($contents)
+    {
+        $this->contents = $contents;
+    }
+
+    public function setMode($mode)
+    {
+        $this->mode = $mode;
+    }
+
+    public function setType($type)
+    {
+        if (is_string($type)) {
+            switch ($type) {
+                case 'directory':
+                case 'd':
+                    $this->type = self::TYPE_DIRECTORY;
+                    break;
+                case 'file':
+                case 'f':
+                    $this->type = self::TYPE_FILE;
+                    break;
+                default:
+                    $this->type = self::TYPE_UNKNOWN;
+            }
+        } else {
+            $this->type = $type;
+        }
+    }
+
+    public function setRelativePath($relativePath)
+    {
+        $this->relativePath = $relativePath;
+    }
+
+    public function setRelativePathname($relativePathname)
+    {
+        $this->relativePathname = $relativePathname;
+    }
+
+    public function getRelativePath()
+    {
+        return $this->relativePath;
+    }
+
+    public function getRelativePathname()
+    {
+        return $this->relativePathname;
+    }
+}