Example #1
0
 public function testFilter()
 {
     $records = [1, false, null, ''];
     $collection = new Collection($records);
     $this->expectsException(function () use($collection) {
         $collection->filter('exception');
     }, Exception::class, null, Exception::INVALID_CALLBACK);
     // default behaviour: filter returns a new Collection
     $filtered = $collection->filter();
     $this->assertInstanceOf(Collection::class, $filtered);
     $this->assertSame($collection, $filtered);
     $this->assertEquals([1], $filtered->getArrayCopy());
     // alternative: it returns self
     $filtered = $collection->copy()->filter();
     $this->assertInstanceOf(Collection::class, $filtered);
     $this->assertNotSame($collection, $filtered);
     $this->assertEquals([1], $filtered->getArrayCopy());
     // other scenarii
     $records = [1, 'test', 'test', ''];
     $collection = new Collection($records);
     $filtered = $collection->filter(function () {
         return false;
     });
     $this->assertInstanceOf(Collection::class, $filtered);
     $this->assertSame($collection, $filtered);
     $this->assertEquals([], $filtered->getArrayCopy());
     $filtered = $collection->filter(function () {
         return false;
     }, true);
     $this->assertSame($collection, $filtered);
     $this->assertEquals([], $filtered->getArrayCopy());
 }