public function testSlice() { $this->assertEquals(['b', 'c'], P::slice(1, 3, ['a', 'b', 'c', 'd'])); $this->assertEquals(['b', 'c', 'd'], P::slice(1, NULL, ['a', 'b', 'c', 'd'])); $this->assertEquals(['a', 'b', 'c'], P::slice(0, -1, ['a', 'b', 'c', 'd'])); $this->assertEquals(['b', 'c'], P::slice(-3, -1, ['a', 'b', 'c', 'd'])); $this->assertEquals(['b', 'c'], P::slice(-3, -1, ['a', 'b', 'c', 'd'])); $this->assertEquals(['c' => 'd', 'e' => 'f'], P::slice(-3, -1, ['a' => 'b', 'c' => 'd', 'e' => 'f', 'g' => 'h'])); $a = function () { (yield 'a'); (yield 'b'); (yield 'c'); (yield 'd'); }; $this->assertEquals(['b', 'c'], P::slice(1, 3, $a())); }