@@ -99,14 +99,167 @@ protected function assertNotContainsEquals(mixed $needle, iterable $haystack, st
9999 Assert::assertNotContainsEquals ($ needle , $ haystack , $ message );
100100 }
101101
102+ /**
103+ * @param iterable<mixed> $haystack
104+ */
105+ protected function assertContainsNotOnlyArray (iterable $ haystack , string $ message = '' ): void
106+ {
107+ Assert::assertContainsNotOnlyArray ($ haystack , $ message );
108+ }
109+
110+ /**
111+ * @param iterable<mixed> $haystack
112+ */
113+ protected function assertContainsNotOnlyBool (iterable $ haystack , string $ message = '' ): void
114+ {
115+ Assert::assertContainsNotOnlyBool ($ haystack , $ message );
116+ }
117+
118+ /**
119+ * @param iterable<mixed> $haystack
120+ */
121+ protected function assertContainsNotOnlyCallable (iterable $ haystack , string $ message = '' ): void
122+ {
123+ Assert::assertContainsNotOnlyCallable ($ haystack , $ message );
124+ }
125+
126+ /**
127+ * @param iterable<mixed> $haystack
128+ */
129+ protected function assertContainsNotOnlyFloat (iterable $ haystack , string $ message = '' ): void
130+ {
131+ Assert::assertContainsNotOnlyFloat ($ haystack , $ message );
132+ }
133+
134+ /**
135+ * @param class-string $className
136+ * @param iterable<mixed> $haystack
137+ */
138+ protected function assertContainsNotOnlyInstancesOf (string $ className , iterable $ haystack , string $ message = '' ): void
139+ {
140+ Assert::assertContainsNotOnlyInstancesOf ($ className , $ haystack , $ message );
141+ }
142+
143+ /**
144+ * @param iterable<mixed> $haystack
145+ */
146+ protected function assertContainsNotOnlyInt (iterable $ haystack , string $ message = '' ): void
147+ {
148+ Assert::assertContainsNotOnlyInt ($ haystack , $ message );
149+ }
150+
151+ /**
152+ * @param iterable<mixed> $haystack
153+ */
154+ protected function assertContainsNotOnlyIterable (iterable $ haystack , string $ message = '' ): void
155+ {
156+ Assert::assertContainsNotOnlyIterable ($ haystack , $ message );
157+ }
158+
159+ /**
160+ * @param iterable<mixed> $haystack
161+ */
162+ protected function assertContainsNotOnlyNull (iterable $ haystack , string $ message = '' ): void
163+ {
164+ Assert::assertContainsNotOnlyNull ($ haystack , $ message );
165+ }
166+
167+ /**
168+ * @param iterable<mixed> $haystack
169+ */
170+ protected function assertContainsNotOnlyNumeric (iterable $ haystack , string $ message = '' ): void
171+ {
172+ Assert::assertContainsNotOnlyNumeric ($ haystack , $ message );
173+ }
174+
175+ /**
176+ * @param iterable<mixed> $haystack
177+ */
178+ protected function assertContainsNotOnlyObject (iterable $ haystack , string $ message = '' ): void
179+ {
180+ Assert::assertContainsNotOnlyObject ($ haystack , $ message );
181+ }
182+
183+ /**
184+ * @param iterable<mixed> $haystack
185+ */
186+ protected function assertContainsNotOnlyResource (iterable $ haystack , string $ message = '' ): void
187+ {
188+ Assert::assertContainsNotOnlyResource ($ haystack , $ message );
189+ }
190+
191+ /**
192+ * @param iterable<mixed> $haystack
193+ */
194+ protected function assertContainsNotOnlyClosedResource (iterable $ haystack , string $ message = '' ): void
195+ {
196+ Assert::assertContainsNotOnlyClosedResource ($ haystack , $ message );
197+ }
198+
199+ /**
200+ * @param iterable<mixed> $haystack
201+ */
202+ protected function assertContainsNotOnlyScalar (iterable $ haystack , string $ message = '' ): void
203+ {
204+ Assert::assertContainsNotOnlyScalar ($ haystack , $ message );
205+ }
206+
207+ /**
208+ * @param iterable<mixed> $haystack
209+ */
210+ protected function assertContainsNotOnlyString (iterable $ haystack , string $ message = '' ): void
211+ {
212+ Assert::assertContainsNotOnlyString ($ haystack , $ message );
213+ }
214+
102215 /**
103216 * Asserts that a haystack contains only values of a given type.
104- * @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'scalar'|'string' $type
217+ * @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'scalar'|'string'|class-string $type
105218 * @param iterable<mixed> $haystack
106219 */
107220 protected function assertContainsOnly (string $ type , iterable $ haystack , ?bool $ isNativeType = null , string $ message = '' ): void
108221 {
109- Assert::assertContainsOnly ($ type , $ haystack , $ isNativeType , $ message );
222+ $ replacement = match ($ type ) {
223+ 'array ' => 'assertContainsOnlyArray ' ,
224+ 'bool ' , 'boolean ' => 'assertContainsOnlyBool ' ,
225+ 'callable ' => 'assertContainsOnlyCallable ' ,
226+ 'double ' , 'float ' , 'real ' => 'assertContainsOnlyFloat ' ,
227+ 'int ' , 'integer ' => 'assertContainsOnlyInt ' ,
228+ 'iterable ' => 'assertContainsOnlyIterable ' ,
229+ 'null ' => 'assertContainsOnlyNull ' ,
230+ 'numeric ' => 'assertContainsOnlyNumeric ' ,
231+ 'object ' => 'assertContainsOnlyObject ' ,
232+ 'resource ' => 'assertContainsOnlyResource ' ,
233+ 'resource (closed) ' => 'assertContainsOnlyClosedResource ' ,
234+ 'scalar ' => 'assertContainsOnlyScalar ' ,
235+ 'string ' => 'assertContainsOnlyString ' ,
236+ default => null ,
237+ };
238+
239+ if (is_string ($ replacement )) {
240+ trigger_error (
241+ sprintf (
242+ '%s is deprecated since PHPUnit 11.5. Please use %s($haystack) instead of assertContainsOnly( \'%s \', $haystack) ' ,
243+ __FUNCTION__ ,
244+ $ replacement ,
245+ $ type ,
246+ ),
247+ E_USER_DEPRECATED ,
248+ );
249+
250+ $ this ->$ replacement ($ haystack , $ message );
251+ } else {
252+ trigger_error (
253+ sprintf (
254+ 'assertContainsOnly() is deprecated since PHPUnit 11.5. Please use assertContainsOnlyInstancesOf( \'%s \', $haystack) instead of assertContainsOnly( \'%s \', $haystack). ' ,
255+ $ type ,
256+ $ type ,
257+ ),
258+ E_USER_DEPRECATED ,
259+ );
260+
261+ Assert::assertContainsOnlyInstancesOf ($ type , $ haystack , $ message );
262+ }
110263 }
111264
112265 /**
@@ -119,6 +272,110 @@ protected function assertContainsOnlyInstancesOf(string $className, iterable $ha
119272 Assert::assertContainsOnlyInstancesOf ($ className , $ haystack , $ message );
120273 }
121274
275+ /**
276+ * @param iterable<mixed> $haystack
277+ */
278+ protected function assertContainsOnlyArray (iterable $ haystack , string $ message = '' ): void
279+ {
280+ Assert::assertContainsOnlyArray ($ haystack , $ message );
281+ }
282+
283+ /**
284+ * @param iterable<mixed> $haystack
285+ */
286+ protected function assertContainsOnlyBool (iterable $ haystack , string $ message = '' ): void
287+ {
288+ Assert::assertContainsOnlyBool ($ haystack , $ message );
289+ }
290+
291+ /**
292+ * @param iterable<mixed> $haystack
293+ */
294+ protected function assertContainsOnlyCallable (iterable $ haystack , string $ message = '' ): void
295+ {
296+ Assert::assertContainsOnlyCallable ($ haystack , $ message );
297+ }
298+
299+ /**
300+ * @param iterable<mixed> $haystack
301+ */
302+ protected function assertContainsOnlyFloat (iterable $ haystack , string $ message = '' ): void
303+ {
304+ Assert::assertContainsOnlyFloat ($ haystack , $ message );
305+ }
306+
307+ /**
308+ * @param iterable<mixed> $haystack
309+ */
310+ protected function assertContainsOnlyInt (iterable $ haystack , string $ message = '' ): void
311+ {
312+ Assert::assertContainsOnlyInt ($ haystack , $ message );
313+ }
314+
315+ /**
316+ * @param iterable<mixed> $haystack
317+ */
318+ protected function assertContainsOnlyIterable (iterable $ haystack , string $ message = '' ): void
319+ {
320+ Assert::assertContainsOnlyIterable ($ haystack , $ message );
321+ }
322+
323+ /**
324+ * @param iterable<mixed> $haystack
325+ */
326+ protected function assertContainsOnlyNull (iterable $ haystack , string $ message = '' ): void
327+ {
328+ Assert::assertContainsOnlyNull ($ haystack , $ message );
329+ }
330+
331+ /**
332+ * @param iterable<mixed> $haystack
333+ */
334+ protected function assertContainsOnlyNumeric (iterable $ haystack , string $ message = '' ): void
335+ {
336+ Assert::assertContainsOnlyNumeric ($ haystack , $ message );
337+ }
338+
339+ /**
340+ * @param iterable<mixed> $haystack
341+ */
342+ protected function assertContainsOnlyObject (iterable $ haystack , string $ message = '' ): void
343+ {
344+ Assert::assertContainsOnlyObject ($ haystack , $ message );
345+ }
346+
347+ /**
348+ * @param iterable<mixed> $haystack
349+ */
350+ protected function assertContainsOnlyResource (iterable $ haystack , string $ message = '' ): void
351+ {
352+ Assert::assertContainsOnlyResource ($ haystack , $ message );
353+ }
354+
355+ /**
356+ * @param iterable<mixed> $haystack
357+ */
358+ protected function assertContainsOnlyClosedResource (iterable $ haystack , string $ message = '' ): void
359+ {
360+ Assert::assertContainsOnlyClosedResource ($ haystack , $ message );
361+ }
362+
363+ /**
364+ * @param iterable<mixed> $haystack
365+ */
366+ protected function assertContainsOnlyScalar (iterable $ haystack , string $ message = '' ): void
367+ {
368+ Assert::assertContainsOnlyScalar ($ haystack , $ message );
369+ }
370+
371+ /**
372+ * @param iterable<mixed> $haystack
373+ */
374+ protected function assertContainsOnlyString (iterable $ haystack , string $ message = '' ): void
375+ {
376+ Assert::assertContainsOnlyString ($ haystack , $ message );
377+ }
378+
122379 /**
123380 * Asserts the number of elements of an array, Countable or Traversable.
124381 *
@@ -833,14 +1090,54 @@ protected function assertNotContains(mixed $needle, iterable $haystack, string $
8331090
8341091 /**
8351092 * Asserts that a haystack does not contain only values of a given type.
836- * @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'scalar'|'string' $type
1093+ * @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'scalar'|'string'|class-string $type
8371094 * @param iterable<mixed> $haystack
8381095 */
8391096 protected function assertNotContainsOnly (string $ type , iterable $ haystack , ?bool $ isNativeType = null , string $ message = '' ): void
8401097 {
841- Assert::assertNotContainsOnly ($ type , $ haystack , $ isNativeType , $ message );
1098+ $ replacement = match ($ type ) {
1099+ 'array ' => 'assertContainsNotOnlyArray ' ,
1100+ 'bool ' , 'boolean ' => 'assertContainsNotOnlyBool ' ,
1101+ 'callable ' => 'assertContainsNotOnlyCallable ' ,
1102+ 'double ' , 'float ' , 'real ' => 'assertContainsNotOnlyFloat ' ,
1103+ 'int ' , 'integer ' => 'assertContainsNotOnlyInt ' ,
1104+ 'iterable ' => 'assertContainsNotOnlyIterable ' ,
1105+ 'null ' => 'assertContainsNotOnlyNull ' ,
1106+ 'numeric ' => 'assertContainsNotOnlyNumeric ' ,
1107+ 'object ' => 'assertContainsNotOnlyObject ' ,
1108+ 'resource ' => 'assertContainsNotOnlyResource ' ,
1109+ 'resource (closed) ' => 'assertContainsNotOnlyClosedResource ' ,
1110+ 'scalar ' => 'assertContainsNotOnlyScalar ' ,
1111+ 'string ' => 'assertContainsNotOnlyString ' ,
1112+ default => null ,
1113+ };
1114+
1115+ if (is_string ($ replacement )) {
1116+ trigger_error (
1117+ sprintf (
1118+ '%s is deprecated since PHPUnit 11.5. Please use %s($haystack) instead of assertContainsNotOnly( \'%s \', $haystack) ' ,
1119+ __FUNCTION__ ,
1120+ $ replacement ,
1121+ $ type ,
1122+ ),
1123+ E_USER_DEPRECATED ,
1124+ );
1125+
1126+ $ this ->$ replacement ($ haystack , $ message );
1127+ } else {
1128+ trigger_error (
1129+ sprintf (
1130+ 'assertNotContainsOnly() is deprecated since PHPUnit 11.5. Please use assertContainsNotOnlyInstancesOf( \'%s \', $haystack) instead of assertNotContainsOnly( \'%s \', $haystack). ' ,
1131+ $ type ,
1132+ $ type ,
1133+ ),
1134+ E_USER_DEPRECATED ,
1135+ );
1136+
1137+ Assert::assertContainsNotOnlyInstancesOf ($ type , $ haystack , $ message );
1138+ }
8421139 }
843-
1140+
8441141 /**
8451142 * Asserts the number of elements of an array, Countable or Traversable.
8461143 *
0 commit comments