33namespace Toolkit \StdlibTest \Util ;
44
55use Toolkit \Stdlib \Util \Optional ;
6+ use Toolkit \Stdlib \Util \Stream \IntStream ;
67use Toolkit \StdlibTest \BaseLibTestCase ;
78
89/**
@@ -18,32 +19,38 @@ public function testOptionalBasic(): void
1819 $ this ->assertEquals (23 , $ o ->get ());
1920 $ this ->assertEquals ('23 ' , $ o ->map ('strval ' )->get ());
2021
21- $ val = $ o ->filter (static function ($ val ) {
22- return $ val > 25 ;
23- })->orElse (25 );
24-
25- $ this ->assertEquals (25 , $ val );
26-
2722 // use arrow syntax:
2823 $ val = $ o ->filter (fn ($ val ) => $ val > 25 )->orElse (25 );
2924 $ this ->assertEquals (25 , $ val );
25+
26+ $ o = Optional::nullable (null );
27+ $ this ->assertEquals (23 , $ o ->orElse (23 ));
28+ $ this ->assertEquals (25 , $ o ->orElseGet (fn () => 25 ));
3029 }
3130
32- public function testOptional_or (): void
31+ public function testOptional_stream (): void
3332 {
34- $ o = Optional::ofNullable ( null );
33+ $ o = Optional::nullable ([ 23 , ' 56 ' , ' 78 ' ] );
3534
36- $ this ->runAndGetException ( function () use ( $ o ) {
37- $ o -> get ();
38- } );
35+ $ this ->assertEquals ([ 23 , ' 56 ' , ' 78 ' ], $ o -> get ());
36+ $ list = $ o -> stream ()-> map ( fn ( $ val ) => ( int ) $ val )-> toArray ();
37+ $ this -> assertEquals ([ 23 , 56 , 78 ], $ list );
3938
40- $ val = $ o ->or (function () {
41- return Optional::of (23 );
42- })->get ();
43- $ this ->assertEquals (23 , $ val );
39+ $ this ->assertEquals ([23 , '56 ' , '78 ' ], $ o ->get ());
40+ $ list = $ o ->stream (IntStream::class)->toArray ();
41+ $ this ->assertEquals ([23 , 56 , 78 ], $ list );
42+ }
43+
44+ public function testOptional_or (): void
45+ {
46+ $ o = Optional::ofNullable (null );
47+ $ e = $ this ->tryCatchRun (fn () => $ o ->get ());
48+ $ this ->assertException ($ e , 'No value present ' );
4449
45- // use arrow syntax:
4650 $ val = $ o ->or (fn () => Optional::of (23 ))->get ();
4751 $ this ->assertEquals (23 , $ val );
52+
53+ $ val = $ o ->or (fn () => Optional::of ('abc ' ))->get ();
54+ $ this ->assertEquals ('abc ' , $ val );
4855 }
4956}
0 commit comments