75 lines
1.9 KiB
PHP
75 lines
1.9 KiB
PHP
<?php
|
|
|
|
use Kletellier\PdoWrapper\Collection;
|
|
|
|
test("collection", function () {
|
|
$arr = [];
|
|
for ($i=0; $i < 11; $i++) {
|
|
$arr[] = $i;
|
|
}
|
|
|
|
expect(count($arr))->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);
|
|
|
|
$pluck = $collo->pluck("key");
|
|
expect($pluck)->toBeInstanceOf(Collection::class);
|
|
expect(count($pluck))->toBe(2);
|
|
expect($pluck->first())->toBe("test");
|
|
});
|
|
|