mageekguy\atoum\iterators\recursives\directory\factory: lines coverage

95% of 245

OPs

100% of 44

Lines

87% of 30

Branches

86% of 22

Paths
Method OPs OPs % Lines Line % Branches Branches % Paths Path %
mageekguy\atoum\iterators\recursives\directory\factory::__construct() 22 100% 5 100% 1 0% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::setIteratorFactory() 12 100% 2 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::getIteratorFactory() 6 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::setDotFilterFactory() 12 100% 2 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::getDotFilterFactory() 6 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::setExtensionFilterFactory() 12 100% 2 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::getExtensionFilterFactory() 6 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::getIterator() 51 100% 10 100% 7 100% 4 100%
mageekguy\atoum\iterators\recursives\directory\factory::dotsAreAccepted() 6 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::acceptDots() 9 100% 2 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::refuseDots() 9 100% 2 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::getAcceptedExtensions() 6 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::acceptExtensions() 27 52% 5 100% 6 67% 3 33%
mageekguy\atoum\iterators\recursives\directory\factory::acceptAllExtensions() 11 100% 1 100% 1 100% 1 100%
mageekguy\atoum\iterators\recursives\directory\factory::refuseExtension() 38 100% 7 100% 4 75% 2 50%
mageekguy\atoum\iterators\recursives\directory\factory::cleanExtension() 12 100% 1 100% 1 100% 1 100%
#
1
<?php
2

                    
3
namespace mageekguy\atoum\iterators\recursives\directory;
4

                    
5
use
6
	mageekguy\atoum,
7
	mageekguy\atoum\exceptions,
8
	mageekguy\atoum\iterators\filters
9
;
10

                    
11
class factory implements \iteratorAggregate
12
{
13
	protected $dotFilterFactory = null;
14
	protected $iteratorFactory = null;
15
	protected $acceptDots = false;
16
	protected $extensionFilterFactory = null;
17
	protected $acceptedExtensions = array('php');
18

                    
19
	public function __construct(\closure $iteratorFactory = null, \closure $dotFilterFactory = null, \closure $extensionFilterFactory = null)100%
20
	{
21
		$this
22
			->setIteratorFactory($iteratorFactory)
23
			->setDotFilterFactory($dotFilterFactory)
24
			->setExtensionFilterFactory($extensionFilterFactory)
25
		;
26
	}
27

                    
28
	public function setIteratorFactory(\closure $factory = null)100%
29
	{
30
		$this->iteratorFactory = $factory ?: function($path) { return new \recursiveDirectoryIterator($path); };
31

                    
32
		return $this;
33
	}
34

                    
35
	public function getIteratorFactory()100%
36
	{
37
		return $this->iteratorFactory;
38
	}
39

                    
40
	public function setDotFilterFactory(\closure $factory = null)100%
41
	{
42
		$this->dotFilterFactory = $factory ?: function($iterator) { return new filters\recursives\dot($iterator); };
43

                    
44
		return $this;
45
	}
46

                    
47
	public function getDotFilterFactory()100%
48
	{
49
		return $this->dotFilterFactory;
50
	}
51

                    
52
	public function setExtensionFilterFactory(\closure $factory = null)100%
53
	{
54
		$this->extensionFilterFactory = $factory ?: function($iterator, $extensions) { return new filters\recursives\extension($iterator, $extensions); };
55

                    
56
		return $this;
57
	}
58

                    
59
	public function getExtensionFilterFactory()100%
60
	{
61
		return $this->extensionFilterFactory;
62
	}
63

                    
64
	public function getIterator($path)100%
65
	{
66
		$iterator = call_user_func($this->iteratorFactory, $path);
67

                    
68
		if ($this->acceptDots === false)
69
		{
70
			$iterator = call_user_func($this->dotFilterFactory, $iterator);
71
		}
72

                    
73
		if (sizeof($this->acceptedExtensions) > 0)
74
		{
75
			$iterator = call_user_func($this->extensionFilterFactory, $iterator, $this->acceptedExtensions);
76
		}
77

                    
78
		return $iterator;
79
	}
80

                    
81
	public function dotsAreAccepted()100%
82
	{
83
		return $this->acceptDots;
84
	}
85

                    
86
	public function acceptDots()100%
87
	{
88
		$this->acceptDots = true;
89

                    
90
		return $this;
91
	}
92

                    
93
	public function refuseDots()100%
94
	{
95
		$this->acceptDots = false;
96

                    
97
		return $this;
98
	}
99

                    
100
	public function getAcceptedExtensions()100%
101
	{
102
		return $this->acceptedExtensions;
103
	}
104

                    
105
	public function acceptExtensions(array $extensions)100%
106
	{
107
		$this->acceptedExtensions = array();
108

                    
109
		foreach ($extensions as $extension)
110
		{
111
			$this->acceptedExtensions[] = self::cleanExtension($extension);
112
		}
113

                    
114
		return $this;
115
	}
116

                    
117
	public function acceptAllExtensions()100%
118
	{
119
		return $this->acceptExtensions(array());
120
	}
121

                    
122
	public function refuseExtension($extension)100%
123
	{
124
		$key = array_search(self::cleanExtension($extension), $this->acceptedExtensions);
125

                    
126
		if ($key !== false)
127
		{
128
			unset($this->acceptedExtensions[$key]);
129

                    
130
			$this->acceptedExtensions = array_values($this->acceptedExtensions);
131
		}
132

                    
133
		return $this;
134
	}
135

                    
136
	protected static function cleanExtension($extension)100%
137
	{
138
		return trim($extension, '.');
139
	}
140
}