@@ -176,7 +176,7 @@ public function testFilterMap(Seq $seq): void
176176 {
177177 $ this ->assertEquals (
178178 [1 , 2 ],
179- $ seq ->filterMap (fn ($ e ) => is_numeric ($ e ) ? Option::some ((int ) $ e ) : Option::none ())
179+ $ seq ->filterMap (fn ($ e ) => is_numeric ($ e ) ? Option::some ((int )$ e ) : Option::none ())
180180 ->toArray ()
181181 );
182182 }
@@ -330,7 +330,7 @@ public function testMap(Seq $seq): void
330330 {
331331 $ this ->assertEquals (
332332 ['2 ' , '3 ' , '4 ' ],
333- $ seq ->map (fn ($ e ) => (string ) ($ e + 1 ))->toArray ()
333+ $ seq ->map (fn ($ e ) => (string )($ e + 1 ))->toArray ()
334334 );
335335 }
336336
@@ -554,7 +554,7 @@ public function provideTestIntersperseData(): Generator
554554 */
555555 public function testIntersperse (Seq $ seq ): void
556556 {
557- $ this ->assertEquals ([0 , ', ' , 1 , ', ' , 2 ], $ seq ->intersperse (', ' )->toArray ());
557+ $ this ->assertEquals ([0 , ', ' , 1 , ', ' , 2 ], $ seq ->intersperse (', ' )->toArray ());
558558 }
559559
560560 public function provideTestZipData (): Generator
@@ -585,4 +585,76 @@ public function testMkString(Seq $seq, Seq $emptySeq): void
585585 $ this ->assertEquals ('(0,1,2) ' , $ seq ->mkString ('( ' , ', ' , ') ' ));
586586 $ this ->assertEquals ('() ' , $ emptySeq ->mkString ('( ' , ', ' , ') ' ));
587587 }
588+
589+ public function provideTestMaxNotEmptyCollections (): Generator
590+ {
591+ yield ArrayList::class => [ArrayList::collect ([3 , 7 , 2 ]), Option::some (7 )];
592+ yield LinkedList::class => [LinkedList::collect ([9 , 1 , 2 ]), Option::some (9 )];
593+ }
594+
595+ /**
596+ * @dataProvider provideTestMaxNotEmptyCollections
597+ */
598+ public function testMaxInNotEmptyCollection (Seq $ seq , Option $ option ): void
599+ {
600+ $ this ->assertEquals ($ option , $ seq ->max ());
601+ }
602+
603+ public function provideTestMaxEmptyCollections (): Generator
604+ {
605+ yield ArrayList::class => [ArrayList::collect ([]), Option::none ()];
606+ yield LinkedList::class => [LinkedList::collect ([]), Option::none ()];
607+ }
608+
609+ /**
610+ * @dataProvider provideTestMaxEmptyCollections
611+ */
612+ public function testMaxInEmptyCollection (Seq $ seq , Option $ option ): void
613+ {
614+ $ this ->assertEquals ($ option , $ seq ->max ());
615+ }
616+
617+ public function provideTestMaxByNotEmptyCollections (): Generator
618+ {
619+ yield ArrayList::class => [
620+ ArrayList::collect ([new Foo (1 ), new Foo (5 ), new Foo (2 )]),
621+ Option::some (new Foo (5 ))
622+ ];
623+ yield LinkedList::class => [
624+ LinkedList::collect ([new Foo (9 ), new Foo (1 ), new Foo (2 )]),
625+ Option::some (new Foo (9 ))
626+ ];
627+ }
628+
629+ /**
630+ * @param Seq<Foo> $seq
631+ * @param Option<Foo> $option
632+ * @dataProvider provideTestMaxByNotEmptyCollections
633+ */
634+ public function testMaxByInNotEmptyCollection (Seq $ seq , Option $ option ): void
635+ {
636+ $ this ->assertEquals ($ option , $ seq ->maxBy (fn (Foo $ foo ) => $ foo ->a ));
637+ }
638+
639+ public function provideTestMaxByEmptyCollections (): Generator
640+ {
641+ yield ArrayList::class => [
642+ ArrayList::collect ([]),
643+ Option::none ()
644+ ];
645+ yield LinkedList::class => [
646+ LinkedList::collect ([]),
647+ Option::none ()
648+ ];
649+ }
650+
651+ /**
652+ * @param Seq<Foo> $seq
653+ * @param Option<Foo> $option
654+ * @dataProvider provideTestMaxByEmptyCollections
655+ */
656+ public function testMaxByInEmptyCollection (Seq $ seq , Option $ option ): void
657+ {
658+ $ this ->assertEquals ($ option , $ seq ->maxBy (fn (Foo $ foo ) => $ foo ->a ));
659+ }
588660}
0 commit comments