public function testIterator() { $dir = new Directory($this->root->url() . '/prj'); $dir->make(); $path = $dir->toPath(); $composer = $path->append('composer.json'); $file = $composer->toFileDescriptor()->toFile(); $file->write('{}'); $vendor = $path->append('vendor'); $folder = $vendor->toFileDescriptor()->toDirectory(); $folder->make(); $arr = new ArrayObject(); foreach ($dir as $k => $file) { if (!$file->isDot()) { $this->assertTrue($file instanceof FileDescriptor); $arr[$k] = $file->getFilename(); if ($file->isFile()) { $this->assertEquals('composer.json', $file->getFilename()); } if ($file->isDir()) { $this->assertEquals('vendor', $file->getFilename()); } } } $this->assertEquals(['composer.json', 'vendor'], $arr->sort()->toArray()); }
public function testSort() { $unsorted = [5, 2, 8, 3, 9, 4, 6, 1, 7, 10]; $list = new ArrayObject($unsorted); $this->assertEquals(range(1, 10), $list->sort()->toArray()); $list = new ArrayObject($unsorted); $cmp = function ($a, $b) { if ($a == $b) { return 0; } return $a < $b ? -1 : 1; }; $this->assertEquals(range(1, 10), $list->sort($cmp)->toArray()); $items = ['x', 'c', 'a', 't', 'm']; $list = new ArrayObject(); foreach ($items as $item) { $list->push(new Item($item)); } $list->sort(new ComparableComparator()); $this->assertEquals(['a', 'c', 'm', 't', 'x'], $list->map(function ($item) { return $item->getContent(); })->toArray()); }