annotate vendor/symfony/finder/Tests/Iterator/IteratorTestCase.php @ 19:fa3358dc1485 tip

Add ndrum files
author Chris Cannam
date Wed, 28 Aug 2019 13:14:47 +0100
parents 129ea1e6d783
children
rev   line source
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 use PHPUnit\Framework\TestCase;
Chris@0 15
Chris@0 16 abstract class IteratorTestCase extends TestCase
Chris@0 17 {
Chris@0 18 protected function assertIterator($expected, \Traversable $iterator)
Chris@0 19 {
Chris@0 20 // set iterator_to_array $use_key to false to avoid values merge
Chris@0 21 // this made FinderTest::testAppendWithAnArray() fail with GnuFinderAdapter
Chris@17 22 $values = array_map(function (\SplFileInfo $fileinfo) { return str_replace('/', \DIRECTORY_SEPARATOR, $fileinfo->getPathname()); }, iterator_to_array($iterator, false));
Chris@0 23
Chris@17 24 $expected = array_map(function ($path) { return str_replace('/', \DIRECTORY_SEPARATOR, $path); }, $expected);
Chris@0 25
Chris@0 26 sort($values);
Chris@0 27 sort($expected);
Chris@0 28
Chris@0 29 $this->assertEquals($expected, array_values($values));
Chris@0 30 }
Chris@0 31
Chris@0 32 protected function assertOrderedIterator($expected, \Traversable $iterator)
Chris@0 33 {
Chris@0 34 $values = array_map(function (\SplFileInfo $fileinfo) { return $fileinfo->getPathname(); }, iterator_to_array($iterator));
Chris@0 35
Chris@0 36 $this->assertEquals($expected, array_values($values));
Chris@0 37 }
Chris@0 38
Chris@0 39 /**
Chris@0 40 * Same as assertOrderedIterator, but checks the order of groups of
Chris@0 41 * array elements.
Chris@0 42 *
Chris@0 43 * @param array $expected - an array of arrays. For any two subarrays
Chris@0 44 * $a and $b such that $a goes before $b in $expected, the method
Chris@0 45 * asserts that any element of $a goes before any element of $b
Chris@0 46 * in the sequence generated by $iterator
Chris@0 47 * @param \Traversable $iterator
Chris@0 48 */
Chris@0 49 protected function assertOrderedIteratorForGroups($expected, \Traversable $iterator)
Chris@0 50 {
Chris@0 51 $values = array_values(array_map(function (\SplFileInfo $fileinfo) { return $fileinfo->getPathname(); }, iterator_to_array($iterator)));
Chris@0 52
Chris@0 53 foreach ($expected as $subarray) {
Chris@17 54 $temp = [];
Chris@17 55 while (\count($values) && \count($temp) < \count($subarray)) {
Chris@0 56 $temp[] = array_shift($values);
Chris@0 57 }
Chris@0 58 sort($temp);
Chris@0 59 sort($subarray);
Chris@0 60 $this->assertEquals($subarray, $temp);
Chris@0 61 }
Chris@0 62 }
Chris@0 63
Chris@0 64 /**
Chris@0 65 * Same as IteratorTestCase::assertIterator with foreach usage.
Chris@0 66 *
Chris@0 67 * @param array $expected
Chris@0 68 * @param \Traversable $iterator
Chris@0 69 */
Chris@0 70 protected function assertIteratorInForeach($expected, \Traversable $iterator)
Chris@0 71 {
Chris@17 72 $values = [];
Chris@0 73 foreach ($iterator as $file) {
Chris@0 74 $this->assertInstanceOf('Symfony\\Component\\Finder\\SplFileInfo', $file);
Chris@0 75 $values[] = $file->getPathname();
Chris@0 76 }
Chris@0 77
Chris@0 78 sort($values);
Chris@0 79 sort($expected);
Chris@0 80
Chris@0 81 $this->assertEquals($expected, array_values($values));
Chris@0 82 }
Chris@0 83
Chris@0 84 /**
Chris@0 85 * Same as IteratorTestCase::assertOrderedIterator with foreach usage.
Chris@0 86 *
Chris@0 87 * @param array $expected
Chris@0 88 * @param \Traversable $iterator
Chris@0 89 */
Chris@0 90 protected function assertOrderedIteratorInForeach($expected, \Traversable $iterator)
Chris@0 91 {
Chris@17 92 $values = [];
Chris@0 93 foreach ($iterator as $file) {
Chris@0 94 $this->assertInstanceOf('Symfony\\Component\\Finder\\SplFileInfo', $file);
Chris@0 95 $values[] = $file->getPathname();
Chris@0 96 }
Chris@0 97
Chris@0 98 $this->assertEquals($expected, array_values($values));
Chris@0 99 }
Chris@0 100 }