public function scenarioProvider() { //$arrayLike, $hof, $expected $m2 = function ($value) { return $value % 2 === 0; }; return ['[1,2,3] % 2' => [[1, 2, 3], $m2, ["false" => [[0, 1], [2, 3]], "true" => [[1, 2]]]], 'ArrayObject[1,2,3] % 2' => [new \ArrayObject([1, 2, 3]), $m2, ["false" => [[0, 1], [2, 3]], "true" => [[1, 2]]]], 'ArrayIterator[1,2,3] % 2' => [new \ArrayIterator([1, 2, 3]), $m2, ["false" => [[0, 1], [2, 3]], "true" => [[1, 2]]]], 'Some(1) % 2' => [P\Some(1), $m2, ["false" => [[0, 1]], "true" => []]], 'None % 2' => [P\None(), $m2, ["false" => [], "true" => []]], 'S[1,2,3] % 2' => [P\Seq::of(1, 2, 3), $m2, P\Seq::from(["false" => P\Seq::of([0, 1], [2, 3]), "true" => P\Seq::of([1, 2])])]]; }
public function emptyCollectionProvider() { return [[[]], [P\None()], [P\Seq::from([])], [new \ArrayIterator([])]]; }
public function indexOfProvider() { $none = P\None(); $some1 = P\Some(1); $one = 1; return ['keyed source find None S[one=>1, none=>None, some=>Some(1) ]' => [testSubject::from(['one' => $one, 'none' => $none, 'some' => $some1]), $none, P\Some('none')], 'source find None S[1,None, Some(1)]' => [testSubject::of($one, $none, $some1), $none, P\Some(1)], 'source find Some(1) in S[1,2,Some(1),3]' => [testSubject::of(1, 2, $some1, 3), $some1, P\Some(2)], 'find null in 0 index' => [testSubject::from([null]), null, P\Some(0)], 'fail to find Some(1) in S[1,2,3]' => [testSubject::of(1, 2, 3), $some1, $none], 'fail to find Some(1) in S[]' => [testSubject::of(), $some1, $none]]; }