55namespace Devlop \Json \Tests ;
66
77use Devlop \Json \Json ;
8- use Devlop \Json \Tests \Assertions \AssertException ;
8+ use Devlop \PHPUnit \ExceptionAssertions ;
9+ use JsonException ;
910use PHPUnit \Framework \TestCase ;
11+ use Throwable ;
1012
1113final class JsonEncodeTest extends TestCase
1214{
13- use AssertException;
15+ use ExceptionAssertions;
16+
17+ public function test_encode_throws_exception_on_error ()
18+ {
19+ $ recursion = [
20+ &$ recursion ,
21+ ];
22+
23+ $ arguments = [
24+ $ recursion ,
25+ INF ,
26+ NAN ,
27+ ];
28+
29+ foreach ($ arguments as $ argument ) {
30+ $ this ->assertExceptionThrown (JsonException::class, function () use ($ argument ) {
31+ Json::encode ($ argument );
32+ });
33+ }
34+ }
1435
1536 public function test_encodes_integer_values_array () : void
1637 {
@@ -128,23 +149,24 @@ public function test_encode_flags_argument() : void
128149
129150 public function test_encode_depth_argument () : void
130151 {
131- $ this ->expectException (\JsonException::class);
132-
133- try {
134- $ output = Json::encode ([
135- 'first ' => 'one ' ,
136- 'second ' => 'two ' ,
137- 'third ' => [
138- 'three ' ,
139- 'four ' ,
140- 'five ' ,
141- ],
142- ], Json::NO_FLAGS , 1 );
143- } catch (\JsonException $ e ) {
144- $ this ->assertEquals ('Maximum stack depth exceeded ' , $ e ->getMessage ());
145-
146- throw $ e ;
147- }
152+ $ argument = [
153+ 'first ' => 'one ' ,
154+ 'second ' => 'two ' ,
155+ 'third ' => [
156+ 'three ' ,
157+ 'four ' ,
158+ 'five ' ,
159+ ],
160+ ];
161+
162+ $ this ->assertExceptionThrown (JsonException::class, function () use ($ argument ) {
163+ Json::encode ($ argument , Json::NO_FLAGS , 1 );
164+ }, function (Throwable $ exception ) : void {
165+ $ this ->assertEquals (
166+ 'Maximum stack depth exceeded ' ,
167+ $ exception ->getMessage (),
168+ );
169+ });
148170 }
149171
150172 public function test_does_not_encode_scalar_or_null_arguments () : void
@@ -159,7 +181,7 @@ public function test_does_not_encode_scalar_or_null_arguments() : void
159181 ];
160182
161183 foreach ($ arguments as $ argument ) {
162- $ this ->assertException (\ JsonException::class, function () use ($ argument ) {
184+ $ this ->assertExceptionThrown ( JsonException::class, function () use ($ argument ) {
163185 Json::pretty ($ argument );
164186 });
165187 }
@@ -173,9 +195,9 @@ public function test_encodes_array_and_objects() : void
173195 ];
174196
175197 foreach ($ arguments as $ argument ) {
176- // $this->assertException(\ JsonException::class, function () use ($argument) {
177- // Json::pretty($argument);
178- // });
198+ $ this ->assertExceptionNotThrown ( JsonException::class, function () use ($ argument ) {
199+ Json::pretty ($ argument );
200+ });
179201 }
180202 }
181203}
0 commit comments