@@ -750,4 +750,44 @@ public function test_uuid(): void
750750 {
751751 $ this ->assertTrue (str ()->uuid ()->isUuid ());
752752 }
753+
754+ public function test_json_decode (): void
755+ {
756+ $ json = '{"name": "tempest", "version": "1.0", "tags": ["php", "framework"]} ' ;
757+ $ result = str ($ json )->jsonDecode ();
758+
759+ $ this ->assertInstanceOf (\Tempest \Support \Arr \ImmutableArray::class, $ result );
760+ $ this ->assertSame ('tempest ' , $ result ->get ('name ' ));
761+ $ this ->assertSame ('1.0 ' , $ result ->get ('version ' ));
762+ $ this ->assertInstanceOf (\Tempest \Support \Arr \ImmutableArray::class, $ result ->get ('tags ' ));
763+ $ this ->assertSame (['php ' , 'framework ' ], $ result ->get ('tags ' )->toArray ());
764+ }
765+
766+ public function test_json_decode_mutable (): void
767+ {
768+ $ json = '{"name": "tempest", "version": "1.0"} ' ;
769+ $ result = str ($ json )->jsonDecode (mutable: true );
770+
771+ $ this ->assertInstanceOf (\Tempest \Support \Arr \MutableArray::class, $ result );
772+ $ this ->assertSame ('tempest ' , $ result ->get ('name ' ));
773+ $ this ->assertSame ('1.0 ' , $ result ->get ('version ' ));
774+ }
775+
776+ public function test_json_decode_array (): void
777+ {
778+ $ json = '["php", "framework", "tempest"] ' ;
779+ $ result = str ($ json )->jsonDecode ();
780+
781+ $ this ->assertInstanceOf (\Tempest \Support \Arr \ImmutableArray::class, $ result );
782+ $ this ->assertSame ('php ' , $ result ->get (0 ));
783+ $ this ->assertSame ('framework ' , $ result ->get (1 ));
784+ $ this ->assertSame ('tempest ' , $ result ->get (2 ));
785+ }
786+
787+ public function test_json_decode_invalid_json (): void
788+ {
789+ $ this ->expectException (\Tempest \Support \Json \Exception \JsonCouldNotBeDecoded::class);
790+
791+ str ('invalid json ' )->jsonDecode ();
792+ }
753793}
0 commit comments