assertEquals($expected, ArraySlice::slice($array, $start, $stop, $step)); } public function testSliceProvider() { return array( array( array(1, 2, 3, 4, 5), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 1, 6 ), array( array(1, 2, 3, 4, 5, 6, 7, 8), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 1, -1 ), array( array(), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 1, -12 ), array( array(1, 0), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 1, -12, -1 ), array( array(), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 12, 5 ), array( array(9, 8, 7, 6), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 12, 5, -1 ), array( array(1, 2, 3, 4, 5, 6, 7, 8, 9), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), 1, ), array( array(0, 1, 2, 3, 4), array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9), null, 5 ) ); } public function testSliceByReference() { $original = array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); $result = ArraySlice::slice($original, 1, 8, 2); $result[2] = -1; $this->assertEquals(5, $original[5]); $result = ArraySlice::slice($original, 1, 8, 2, true); $result[2] = -1; $this->assertEquals(-1, $original[5]); } public function testSliceException() { $exception = null; $array = array(0, 1, 2, 3); try { ArraySlice::slice($array, 1, 4, 0); } catch (\Exception $e) { $exception = $e; } $this->assertEquals("Step cannot be 0", $exception->getMessage()); } }