/** * @dataProvider getTestCollectionData */ public function testCollection($item) { $collection = new Collection($item); // count $this->assertSame(2, $collection->count()); // ArrayAccess test // isset $this->assertTrue(isset($collection['name'])); $this->assertFalse(isset($collection['precious'])); $this->assertFalse(isset($collection['foo'])); // get $this->assertSame('dummy', $collection['name']); $this->assertSame(42, $collection['answer']); // set $collection['foo'] = 'bar'; $this->assertTrue(isset($collection['foo'])); $this->assertSame('bar', $collection['foo']); $this->assertSame(3, $collection->count()); // unset unset($collection['foo']); $this->assertFalse(isset($collection['foo'])); $this->assertSame(2, $collection->count()); // Iterator test $this->assertInstanceOf('\\Traversable', $collection->getIterator()); $out = []; foreach ($collection as $key => $value) { $out[$key] = $value; } $this->assertSame(['name' => 'dummy', 'answer' => 42], $out); // Reversed iterator test $this->assertInstanceOf('\\Traversable', $collection->getIteratorReversed()); $out = []; foreach ($collection->getIteratorReversed() as $key => $value) { $out[$key] = $value; } $this->assertSame(['answer' => 42, 'name' => 'dummy'], $out); // toArray & value $this->assertSame(['name' => 'dummy', 'answer' => 42], $collection->toArray()); $this->assertSame($collection->toArray(), $collection->value()); $collection['foo'] = 'baz'; // here we have one extra key-value pair $this->assertSame(['name' => 'dummy', 'answer' => 42, 'foo' => 'baz'], $collection->toArray()); // collection wrapping $wrapped = new Collection($collection); $this->assertSame($collection->toArray(), $wrapped->toArray()); }
/** * Returns wrapped object * * @param Collection $collection * @return mixed */ public function __invoke(Collection $collection) { return $collection->value(); }