toBe(11); $coll = new Collection($arr); expect($coll->count())->toBe(11); expect($coll->first())->toBe(0); expect($coll->last())->toBe(10); expect($coll->index(1))->toBe(1); expect($coll->random())->toBeGreaterThanOrEqual(0)->toBeLessThanOrEqual(11); $filt = $coll->filter(function($item){ return $item<5;}); expect($filt)->toBeInstanceOf(Collection::class); expect($filt->count())->toBe(5); expect($filt->first())->toBe(0); expect($filt->last())->toBe(4); // no change in initial collection expect($coll->count())->toBe(11); expect($coll->empty())->toBe(false); expect($coll->items())->toBeArray(); expect(count($coll->items()))->toBe(11); $incr = 0; $coll->each(function($item) use(&$incr){ $incr++; }); expect($incr)->toBe(11); $colmap = $coll->map(function($item) { return $item+1; }); expect($colmap)->toBeInstanceOf(Collection::class); expect($colmap->count())->toBe(11); expect($colmap->first())->toBe(1); expect($colmap->last())->toBe(11); $init = 0; $reduce = $coll->reduce(function($item,$carry){ return $item + $carry; },$init); expect($reduce)->toBe(55); $array = $coll->toArray(); expect($array)->toBeArray(); expect(count($array))->toBe(11); $obj = new \stdClass(); $obj->key = "test"; $obj->val = 1; $obj2 = new \stdClass(); $obj2->key = "test2"; $obj2->val = 2; $collo = new Collection([$obj,$obj2]); expect($collo)->toBeInstanceOf(Collection::class); expect(count($collo))->toBe(2); $json = json_encode($collo); expect($json)->toBeJson(); $pluck = $collo->pluck("key"); expect($pluck)->toBeInstanceOf(Collection::class); expect(count($pluck))->toBe(2); expect($pluck->first())->toBe("test"); });