Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 /*
|
Chris@0
|
4 * This file is part of the Symfony package.
|
Chris@0
|
5 *
|
Chris@0
|
6 * (c) Fabien Potencier <fabien@symfony.com>
|
Chris@0
|
7 *
|
Chris@0
|
8 * For the full copyright and license information, please view the LICENSE
|
Chris@0
|
9 * file that was distributed with this source code.
|
Chris@0
|
10 */
|
Chris@0
|
11
|
Chris@0
|
12 namespace Symfony\Component\Finder\Tests\Iterator;
|
Chris@0
|
13
|
Chris@0
|
14 class MockSplFileInfo extends \SplFileInfo
|
Chris@0
|
15 {
|
Chris@0
|
16 const TYPE_DIRECTORY = 1;
|
Chris@0
|
17 const TYPE_FILE = 2;
|
Chris@0
|
18 const TYPE_UNKNOWN = 3;
|
Chris@0
|
19
|
Chris@0
|
20 private $contents = null;
|
Chris@0
|
21 private $mode = null;
|
Chris@0
|
22 private $type = null;
|
Chris@0
|
23 private $relativePath = null;
|
Chris@0
|
24 private $relativePathname = null;
|
Chris@0
|
25
|
Chris@0
|
26 public function __construct($param)
|
Chris@0
|
27 {
|
Chris@17
|
28 if (\is_string($param)) {
|
Chris@0
|
29 parent::__construct($param);
|
Chris@17
|
30 } elseif (\is_array($param)) {
|
Chris@17
|
31 $defaults = [
|
Chris@17
|
32 'name' => 'file.txt',
|
Chris@17
|
33 'contents' => null,
|
Chris@17
|
34 'mode' => null,
|
Chris@17
|
35 'type' => null,
|
Chris@17
|
36 'relativePath' => null,
|
Chris@17
|
37 'relativePathname' => null,
|
Chris@17
|
38 ];
|
Chris@0
|
39 $defaults = array_merge($defaults, $param);
|
Chris@0
|
40 parent::__construct($defaults['name']);
|
Chris@0
|
41 $this->setContents($defaults['contents']);
|
Chris@0
|
42 $this->setMode($defaults['mode']);
|
Chris@0
|
43 $this->setType($defaults['type']);
|
Chris@0
|
44 $this->setRelativePath($defaults['relativePath']);
|
Chris@0
|
45 $this->setRelativePathname($defaults['relativePathname']);
|
Chris@0
|
46 } else {
|
Chris@0
|
47 throw new \RuntimeException(sprintf('Incorrect parameter "%s"', $param));
|
Chris@0
|
48 }
|
Chris@0
|
49 }
|
Chris@0
|
50
|
Chris@0
|
51 public function isFile()
|
Chris@0
|
52 {
|
Chris@0
|
53 if (null === $this->type) {
|
Chris@0
|
54 return false !== strpos($this->getFilename(), 'file');
|
Chris@0
|
55 }
|
Chris@0
|
56
|
Chris@0
|
57 return self::TYPE_FILE === $this->type;
|
Chris@0
|
58 }
|
Chris@0
|
59
|
Chris@0
|
60 public function isDir()
|
Chris@0
|
61 {
|
Chris@0
|
62 if (null === $this->type) {
|
Chris@0
|
63 return false !== strpos($this->getFilename(), 'directory');
|
Chris@0
|
64 }
|
Chris@0
|
65
|
Chris@0
|
66 return self::TYPE_DIRECTORY === $this->type;
|
Chris@0
|
67 }
|
Chris@0
|
68
|
Chris@0
|
69 public function isReadable()
|
Chris@0
|
70 {
|
Chris@0
|
71 if (null === $this->mode) {
|
Chris@0
|
72 return preg_match('/r\+/', $this->getFilename());
|
Chris@0
|
73 }
|
Chris@0
|
74
|
Chris@0
|
75 return preg_match('/r\+/', $this->mode);
|
Chris@0
|
76 }
|
Chris@0
|
77
|
Chris@0
|
78 public function getContents()
|
Chris@0
|
79 {
|
Chris@0
|
80 return $this->contents;
|
Chris@0
|
81 }
|
Chris@0
|
82
|
Chris@0
|
83 public function setContents($contents)
|
Chris@0
|
84 {
|
Chris@0
|
85 $this->contents = $contents;
|
Chris@0
|
86 }
|
Chris@0
|
87
|
Chris@0
|
88 public function setMode($mode)
|
Chris@0
|
89 {
|
Chris@0
|
90 $this->mode = $mode;
|
Chris@0
|
91 }
|
Chris@0
|
92
|
Chris@0
|
93 public function setType($type)
|
Chris@0
|
94 {
|
Chris@17
|
95 if (\is_string($type)) {
|
Chris@0
|
96 switch ($type) {
|
Chris@0
|
97 case 'directory':
|
Chris@0
|
98 case 'd':
|
Chris@0
|
99 $this->type = self::TYPE_DIRECTORY;
|
Chris@0
|
100 break;
|
Chris@0
|
101 case 'file':
|
Chris@0
|
102 case 'f':
|
Chris@0
|
103 $this->type = self::TYPE_FILE;
|
Chris@0
|
104 break;
|
Chris@0
|
105 default:
|
Chris@0
|
106 $this->type = self::TYPE_UNKNOWN;
|
Chris@0
|
107 }
|
Chris@0
|
108 } else {
|
Chris@0
|
109 $this->type = $type;
|
Chris@0
|
110 }
|
Chris@0
|
111 }
|
Chris@0
|
112
|
Chris@0
|
113 public function setRelativePath($relativePath)
|
Chris@0
|
114 {
|
Chris@0
|
115 $this->relativePath = $relativePath;
|
Chris@0
|
116 }
|
Chris@0
|
117
|
Chris@0
|
118 public function setRelativePathname($relativePathname)
|
Chris@0
|
119 {
|
Chris@0
|
120 $this->relativePathname = $relativePathname;
|
Chris@0
|
121 }
|
Chris@0
|
122
|
Chris@0
|
123 public function getRelativePath()
|
Chris@0
|
124 {
|
Chris@0
|
125 return $this->relativePath;
|
Chris@0
|
126 }
|
Chris@0
|
127
|
Chris@0
|
128 public function getRelativePathname()
|
Chris@0
|
129 {
|
Chris@0
|
130 return $this->relativePathname;
|
Chris@0
|
131 }
|
Chris@0
|
132 }
|