diff --git a/src/Symfony/Component/Finder/Tests/Iterator/IteratorTestCase.php b/src/Symfony/Component/Finder/Tests/Iterator/IteratorTestCase.php index 504cfb01b1cee..5f74f380957c7 100644 --- a/src/Symfony/Component/Finder/Tests/Iterator/IteratorTestCase.php +++ b/src/Symfony/Component/Finder/Tests/Iterator/IteratorTestCase.php @@ -34,6 +34,31 @@ protected function assertOrderedIterator($expected, \Traversable $iterator) $this->assertEquals($expected, array_values($values)); } + /** + * Same as assertOrderedIterator, but checks the order of groups of + * array elements. + * + * @param array $expected - an array of arrays. For any two subarrays + * $a and $b such that $a goes before $b in $expected, the method + * asserts that any element of $a goes before any element of $b + * in the sequence generated by $iterator + * @param \Traversable $iterator + */ + protected function assertOrderedIteratorForGroups($expected, \Traversable $iterator) + { + $values = array_values(array_map(function (\SplFileInfo $fileinfo) { return $fileinfo->getPathname(); }, iterator_to_array($iterator))); + + foreach ($expected as $subarray) { + $temp = array(); + while (count($values) && count($temp) < count($subarray)) { + array_push($temp, array_shift($values)); + } + sort($temp); + sort($subarray); + $this->assertEquals($subarray, $temp); + } + } + /** * Same as IteratorTestCase::assertIterator with foreach usage * diff --git a/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php b/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php index 8aa5c89d82fc2..2a7383dc0a908 100644 --- a/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php +++ b/src/Symfony/Component/Finder/Tests/Iterator/RealIteratorTestCase.php @@ -80,7 +80,11 @@ protected static function toAbsolute($files = null) if (is_array($files)) { $f = array(); foreach ($files as $file) { - $f[] = self::$tmpDir.DIRECTORY_SEPARATOR.str_replace('/', DIRECTORY_SEPARATOR, $file); + if (is_array($file)) { + $f[] = self::toAbsolute($file); + } else { + $f[] = self::$tmpDir.DIRECTORY_SEPARATOR.str_replace('/', DIRECTORY_SEPARATOR, $file); + } } return $f; diff --git a/src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php b/src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php index f4def17a18376..e2f433f8e74c3 100644 --- a/src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php +++ b/src/Symfony/Component/Finder/Tests/Iterator/SortableIteratorTest.php @@ -54,7 +54,13 @@ public function testAccept($mode, $expected) $iterator = new SortableIterator($inner, $mode); - $this->assertOrderedIterator($expected, $iterator); + if ($mode === SortableIterator::SORT_BY_ACCESSED_TIME + || $mode === SortableIterator::SORT_BY_CHANGED_TIME + || $mode === SortableIterator::SORT_BY_MODIFIED_TIME) { + $this->assertOrderedIteratorForGroups($expected, $iterator); + } else { + $this->assertOrderedIterator($expected, $iterator); + } } public function getAcceptData() @@ -102,45 +108,53 @@ public function getAcceptData() ); $sortByAccessedTime = array( - 'foo/bar.tmp', - 'test.php', - 'toto', - 'foo bar', - 'foo', - 'test.py', - '.foo', - '.foo/.bar', - '.foo/bar', - '.git', - '.bar', + // For these two files the access time was set to 2005-10-15 + array('foo/bar.tmp', 'test.php'), + // These files were created more or less at the same time + array( + '.git', + '.foo', + '.foo/.bar', + '.foo/bar', + 'test.py', + 'foo', + 'toto', + 'foo bar', + ), + // This file was accessed after sleeping for 1 sec + array('.bar'), ); $sortByChangedTime = array( - 'foo', - 'foo/bar.tmp', - 'toto', - '.git', - '.bar', - '.foo', - 'foo bar', - '.foo/.bar', - '.foo/bar', - 'test.php', - 'test.py', + array( + '.git', + '.foo', + '.foo/.bar', + '.foo/bar', + '.bar', + 'foo', + 'foo/bar.tmp', + 'toto', + 'foo bar', + ), + array('test.php'), + array('test.py'), ); $sortByModifiedTime = array( - 'foo/bar.tmp', - 'foo', - 'toto', - '.git', - '.bar', - '.foo', - 'foo bar', - '.foo/.bar', - '.foo/bar', - 'test.php', - 'test.py', + array( + '.git', + '.foo', + '.foo/.bar', + '.foo/bar', + '.bar', + 'foo', + 'foo/bar.tmp', + 'toto', + 'foo bar', + ), + array('test.php'), + array('test.py'), ); return array(
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies: