1<?php
2
3/*
4 * This file is part of the Symfony package.
5 *
6 * (c) Fabien Potencier <fabien@symfony.com>
7 *
8 * For the full copyright and license information, please view the LICENSE
9 * file that was distributed with this source code.
10 */
11
12namespace Symfony\Component\Finder\Tests\Iterator;
13
14use Symfony\Component\Finder\Iterator\SizeRangeFilterIterator;
15use Symfony\Component\Finder\Comparator\NumberComparator;
16
17class SizeRangeFilterIteratorTest extends RealIteratorTestCase
18{
19    /**
20     * @dataProvider getAcceptData
21     */
22    public function testAccept($size, $expected)
23    {
24        $inner = new InnerSizeIterator(self::$files);
25
26        $iterator = new SizeRangeFilterIterator($inner, $size);
27
28        $this->assertIterator($expected, $iterator);
29    }
30
31    public function getAcceptData()
32    {
33        $lessThan1KGreaterThan05K = array(
34            '.foo',
35            '.git',
36            'foo',
37            'test.php',
38            'toto',
39        );
40
41        return array(
42            array(array(new NumberComparator('< 1K'), new NumberComparator('> 0.5K')), $this->toAbsolute($lessThan1KGreaterThan05K)),
43        );
44    }
45}
46
47class InnerSizeIterator extends \ArrayIterator
48{
49   public function current()
50    {
51        return new \SplFileInfo(parent::current());
52    }
53
54    public function getFilename()
55    {
56        return parent::current();
57    }
58
59    public function isFile()
60    {
61        return $this->current()->isFile();
62    }
63
64    public function getSize()
65    {
66        return $this->current()->getSize();
67    }
68}
69