3232use PhrozenByte \PHPUnitArrayAsserts \Constraint \AssociativeArray ;
3333use PhrozenByte \PHPUnitArrayAsserts \Constraint \SequentialArray ;
3434use PhrozenByte \PHPUnitArrayAsserts \Tests \TestCase ;
35+ use PhrozenByte \PHPUnitThrowableAsserts \CachedCallableProxy ;
3536use Traversable ;
3637
3738/**
@@ -68,10 +69,15 @@ public function testAssociativeArray(
6869 [ $ constraints , $ allowMissing , $ allowAdditional ]
6970 );
7071
71- $ this ->assertCallableThrowsNot (function () use ($ constraints , $ allowMissing , $ allowAdditional ) {
72- $ itemConstraint = Assert::associativeArray ($ constraints , $ allowMissing , $ allowAdditional );
73- $ this ->assertInstanceOf (AssociativeArray::class, $ itemConstraint );
74- }, InvalidArgumentException::class);
72+ $ callableProxy = new CachedCallableProxy (
73+ [ Assert::class, 'associativeArray ' ],
74+ $ constraints ,
75+ $ allowMissing ,
76+ $ allowAdditional
77+ );
78+
79+ $ this ->assertCallableThrowsNot ($ callableProxy , InvalidArgumentException::class);
80+ $ this ->assertInstanceOf (AssociativeArray::class, $ callableProxy ->getReturnValue ());
7581 }
7682
7783 /**
@@ -94,9 +100,16 @@ public function testAssertAssociativeArray(
94100 [ $ array , '' ]
95101 );
96102
97- $ this ->assertCallableThrowsNot (function () use ($ constraints , $ allowMissing , $ allowAdditional , $ array ) {
98- Assert::assertAssociativeArray ($ constraints , $ array , $ allowMissing , $ allowAdditional );
99- }, InvalidArgumentException::class);
103+ $ this ->assertCallableThrowsNot (
104+ $ this ->callableProxy (
105+ [ Assert::class, 'assertAssociativeArray ' ],
106+ $ constraints ,
107+ $ array ,
108+ $ allowMissing ,
109+ $ allowAdditional
110+ ),
111+ InvalidArgumentException::class
112+ );
100113 }
101114
102115 /**
@@ -131,9 +144,17 @@ public function testAssertAssociativeArrayFail(
131144 [ $ array , '' ]
132145 );
133146
134- $ this ->assertCallableThrows (function () use ($ constraints , $ allowMissing , $ allowAdditional , $ array ) {
135- Assert::assertAssociativeArray ($ constraints , $ array , $ allowMissing , $ allowAdditional );
136- }, $ expectedException , $ expectedExceptionMessage );
147+ $ this ->assertCallableThrows (
148+ $ this ->callableProxy (
149+ [ Assert::class, 'assertAssociativeArray ' ],
150+ $ constraints ,
151+ $ array ,
152+ $ allowMissing ,
153+ $ allowAdditional
154+ ),
155+ $ expectedException ,
156+ $ expectedExceptionMessage
157+ );
137158 }
138159
139160 /**
@@ -159,10 +180,9 @@ public function testArrayHasKeyWith(
159180 [ $ key , $ constraint ]
160181 );
161182
162- $ this ->assertCallableThrowsNot (function () use ($ key , $ constraint ) {
163- $ itemConstraint = Assert::arrayHasKeyWith ($ key , $ constraint );
164- $ this ->assertInstanceOf (ArrayHasKeyWith::class, $ itemConstraint );
165- }, InvalidArgumentException::class);
183+ $ callableProxy = new CachedCallableProxy ([ Assert::class, 'arrayHasKeyWith ' ], $ key , $ constraint );
184+ $ this ->assertCallableThrowsNot ($ callableProxy , InvalidArgumentException::class);
185+ $ this ->assertInstanceOf (ArrayHasKeyWith::class, $ callableProxy ->getReturnValue ());
166186 }
167187
168188 /**
@@ -183,9 +203,10 @@ public function testAssertArrayHasKeyWith(
183203 [ $ array , '' ]
184204 );
185205
186- $ this ->assertCallableThrowsNot (function () use ($ key , $ constraint , $ array ) {
187- Assert::assertArrayHasKeyWith ($ key , $ constraint , $ array );
188- }, InvalidArgumentException::class);
206+ $ this ->assertCallableThrowsNot (
207+ $ this ->callableProxy ([ Assert::class, 'assertArrayHasKeyWith ' ], $ key , $ constraint , $ array ),
208+ InvalidArgumentException::class
209+ );
189210 }
190211
191212 /**
@@ -218,9 +239,11 @@ public function testAssertArrayHasKeyWithFail(
218239 [ $ array , '' ]
219240 );
220241
221- $ this ->assertCallableThrows (function () use ($ key , $ constraint , $ array ) {
222- Assert::assertArrayHasKeyWith ($ key , $ constraint , $ array );
223- }, $ expectedException , $ expectedExceptionMessage );
242+ $ this ->assertCallableThrows (
243+ $ this ->callableProxy ([ Assert::class, 'assertArrayHasKeyWith ' ], $ key , $ constraint , $ array ),
244+ $ expectedException ,
245+ $ expectedExceptionMessage
246+ );
224247 }
225248
226249 /**
@@ -248,10 +271,15 @@ public function testSequentialArray(
248271 [ $ minItems , $ maxItems , $ constraint ]
249272 );
250273
251- $ this ->assertCallableThrowsNot (function () use ($ minItems , $ maxItems , $ constraint ) {
252- $ itemConstraint = Assert::sequentialArray ($ minItems , $ maxItems , $ constraint );
253- $ this ->assertInstanceOf (SequentialArray::class, $ itemConstraint );
254- }, InvalidArgumentException::class);
274+ $ callableProxy = new CachedCallableProxy (
275+ [ Assert::class, 'sequentialArray ' ],
276+ $ minItems ,
277+ $ maxItems ,
278+ $ constraint
279+ );
280+
281+ $ this ->assertCallableThrowsNot ($ callableProxy , InvalidArgumentException::class);
282+ $ this ->assertInstanceOf (SequentialArray::class, $ callableProxy ->getReturnValue ());
255283 }
256284
257285 /**
@@ -274,9 +302,10 @@ public function testAssertSequentialArray(
274302 [ $ array , '' ]
275303 );
276304
277- $ this ->assertCallableThrowsNot (function () use ($ minItems , $ maxItems , $ constraint , $ array ) {
278- Assert::assertSequentialArray ($ array , $ minItems , $ maxItems , $ constraint );
279- }, InvalidArgumentException::class);
305+ $ this ->assertCallableThrowsNot (
306+ $ this ->callableProxy ([ Assert::class, 'assertSequentialArray ' ], $ array , $ minItems , $ maxItems , $ constraint ),
307+ InvalidArgumentException::class
308+ );
280309 }
281310
282311 /**
@@ -311,9 +340,11 @@ public function testAssertSequentialArrayFail(
311340 [ $ array , '' ]
312341 );
313342
314- $ this ->assertCallableThrows (function () use ($ minItems , $ maxItems , $ constraint , $ array ) {
315- Assert::assertSequentialArray ($ array , $ minItems , $ maxItems , $ constraint );
316- }, $ expectedException , $ expectedExceptionMessage );
343+ $ this ->assertCallableThrows (
344+ $ this ->callableProxy ([ Assert::class, 'assertSequentialArray ' ], $ array , $ minItems , $ maxItems , $ constraint ),
345+ $ expectedException ,
346+ $ expectedExceptionMessage
347+ );
317348 }
318349
319350 /**
@@ -339,10 +370,9 @@ public function testArrayHasItemWith(
339370 [ $ index , $ constraint ]
340371 );
341372
342- $ this ->assertCallableThrowsNot (function () use ($ index , $ constraint ) {
343- $ itemConstraint = Assert::arrayHasItemWith ($ index , $ constraint );
344- $ this ->assertInstanceOf (ArrayHasItemWith::class, $ itemConstraint );
345- }, InvalidArgumentException::class);
373+ $ callableProxy = new CachedCallableProxy ([ Assert::class, 'arrayHasItemWith ' ], $ index , $ constraint );
374+ $ this ->assertCallableThrowsNot ($ callableProxy , InvalidArgumentException::class);
375+ $ this ->assertInstanceOf (ArrayHasItemWith::class, $ callableProxy ->getReturnValue ());
346376 }
347377
348378 /**
@@ -363,9 +393,10 @@ public function testAssertArrayHasItemWith(
363393 [ $ array , '' ]
364394 );
365395
366- $ this ->assertCallableThrowsNot (function () use ($ index , $ constraint , $ array ) {
367- Assert::assertArrayHasItemWith ($ index , $ constraint , $ array );
368- }, InvalidArgumentException::class);
396+ $ this ->assertCallableThrowsNot (
397+ $ this ->callableProxy ([ Assert::class, 'assertArrayHasItemWith ' ], $ index , $ constraint , $ array ),
398+ InvalidArgumentException::class
399+ );
369400 }
370401
371402 /**
@@ -398,9 +429,11 @@ public function testAssertArrayHasItemWithFail(
398429 [ $ array , '' ]
399430 );
400431
401- $ this ->assertCallableThrows (function () use ($ index , $ constraint , $ array ) {
402- Assert::assertArrayHasItemWith ($ index , $ constraint , $ array );
403- }, $ expectedException , $ expectedExceptionMessage );
432+ $ this ->assertCallableThrows (
433+ $ this ->callableProxy ([ Assert::class, 'assertArrayHasItemWith ' ], $ index , $ constraint , $ array ),
434+ $ expectedException ,
435+ $ expectedExceptionMessage
436+ );
404437 }
405438
406439 /**
0 commit comments