@@ -99,14 +99,120 @@ protected function assertNotContainsEquals(mixed $needle, iterable $haystack, st
9999 Assert ::assertNotContainsEquals ($ needle , $ haystack , $ message );
100100 }
101101
102+ protected function assertContainsNotOnlyArray (iterable $ haystack , string $ message = '' ): void
103+ {
104+ Assert ::assertContainsNotOnlyArray ($ haystack , $ message );
105+ }
106+
107+ protected function assertContainsNotOnlyBool (iterable $ haystack , string $ message = '' ): void
108+ {
109+ Assert ::assertContainsNotOnlyBool ($ haystack , $ message );
110+ }
111+
112+ protected function assertContainsNotOnlyCallable (iterable $ haystack , string $ message = '' ): void
113+ {
114+ Assert ::assertContainsNotOnlyCallable ($ haystack , $ message );
115+ }
116+
117+ protected function assertContainsNotOnlyFloat (iterable $ haystack , string $ message = '' ): void
118+ {
119+ Assert ::assertContainsNotOnlyFloat ($ haystack , $ message );
120+ }
121+
122+ protected function assertContainsNotOnlyInt (iterable $ haystack , string $ message = '' ): void
123+ {
124+ Assert ::assertContainsNotOnlyInt ($ haystack , $ message );
125+ }
126+
127+ protected function assertContainsNotOnlyIterable (iterable $ haystack , string $ message = '' ): void
128+ {
129+ Assert ::assertContainsNotOnlyIterable ($ haystack , $ message );
130+ }
131+
132+ protected function assertContainsNotOnlyNull (iterable $ haystack , string $ message = '' ): void
133+ {
134+ Assert ::assertContainsNotOnlyNull ($ haystack , $ message );
135+ }
136+
137+ protected function assertContainsNotOnlyNumeric (iterable $ haystack , string $ message = '' ): void
138+ {
139+ Assert ::assertContainsNotOnlyNumeric ($ haystack , $ message );
140+ }
141+
142+ protected function assertContainsNotOnlyObject (iterable $ haystack , string $ message = '' ): void
143+ {
144+ Assert ::assertContainsNotOnlyObject ($ haystack , $ message );
145+ }
146+
147+ protected function assertContainsNotOnlyResource (iterable $ haystack , string $ message = '' ): void
148+ {
149+ Assert ::assertContainsNotOnlyResource ($ haystack , $ message );
150+ }
151+
152+ protected function assertContainsNotOnlyClosedResource (iterable $ haystack , string $ message = '' ): void
153+ {
154+ Assert ::assertContainsNotOnlyClosedResource ($ haystack , $ message );
155+ }
156+
157+ protected function assertContainsNotOnlyScalar (iterable $ haystack , string $ message = '' ): void
158+ {
159+ Assert ::assertContainsNotOnlyScalar ($ haystack , $ message );
160+ }
161+
162+ protected function assertContainsNotOnlyString (iterable $ haystack , string $ message = '' ): void
163+ {
164+ Assert ::assertContainsNotOnlyString ($ haystack , $ message );
165+ }
166+
102167 /**
103168 * Asserts that a haystack contains only values of a given type.
104169 * @param 'array'|'bool'|'boolean'|'callable'|'double'|'float'|'int'|'integer'|'iterable'|'null'|'numeric'|'object'|'real'|'resource'|'resource (closed)'|'scalar'|'string' $type
105170 * @param iterable<mixed> $haystack
106171 */
107172 protected function assertContainsOnly (string $ type , iterable $ haystack , ?bool $ isNativeType = null , string $ message = '' ): void
108173 {
109- Assert ::assertContainsOnly ($ type , $ haystack , $ isNativeType , $ message );
174+ $ isNativeType ??= self ::isNativeType ($ type );
175+
176+ if ($ isNativeType ) {
177+ $ replacement = match ($ type ) {
178+ 'array ' => 'assertContainsOnlyArray ' ,
179+ 'bool ' , 'boolean ' => 'assertContainsOnlyBool ' ,
180+ 'callable ' => 'assertContainsOnlyCallable ' ,
181+ 'double ' , 'float ' , 'real ' => 'assertContainsOnlyFloat ' ,
182+ 'int ' , 'integer ' => 'assertContainsOnlyInt ' ,
183+ 'iterable ' => 'assertContainsOnlyIterable ' ,
184+ 'null ' => 'assertContainsOnlyNull ' ,
185+ 'numeric ' => 'assertContainsOnlyNumeric ' ,
186+ 'object ' => 'assertContainsOnlyObject ' ,
187+ 'resource ' => 'assertContainsOnlyResource ' ,
188+ 'resource (closed) ' => 'assertContainsOnlyClosedResource ' ,
189+ 'scalar ' => 'assertContainsOnlyScalar ' ,
190+ 'string ' => 'assertContainsOnlyString ' ,
191+ };
192+
193+ trigger_error (
194+ sprintf (
195+ '%s is deprecated since PHPUnit 11.5. Please use %s($haystack) instead of assertContainsOnly( \'%s \', $haystack) ' ,
196+ __FUNCTION__ ,
197+ $ replacement ,
198+ $ type ,
199+ ),
200+ E_USER_DEPRECATED ,
201+ );
202+
203+ $ this ->$ replacement ($ haystack , $ message );
204+ } else {
205+ trigger_error (
206+ sprintf (
207+ 'assertContainsOnly() is deprecated since PHPUnit 11.5. Please use assertContainsOnlyInstancesOf( \'%s \', $haystack) instead of assertContainsOnly( \'%s \', $haystack). ' ,
208+ $ type ,
209+ $ type ,
210+ ),
211+ E_USER_DEPRECATED ,
212+ );
213+
214+ Assert ::assertContainsOnlyInstancesOf ($ type , $ haystack , $ message );
215+ }
110216 }
111217
112218 /**
@@ -118,6 +224,71 @@ protected function assertContainsOnlyInstancesOf(string $className, iterable $ha
118224 {
119225 Assert ::assertContainsOnlyInstancesOf ($ className , $ haystack , $ message );
120226 }
227+
228+ protected function assertContainsOnlyArray (iterable $ haystack , string $ message = '' ): void
229+ {
230+ Assert ::assertContainsOnlyArray ($ haystack , $ message );
231+ }
232+
233+ protected function assertContainsOnlyBool (iterable $ haystack , string $ message = '' ): void
234+ {
235+ Assert ::assertContainsOnlyBool ($ haystack , $ message );
236+ }
237+
238+ protected function assertContainsOnlyCallable (iterable $ haystack , string $ message = '' ): void
239+ {
240+ Assert ::assertContainsOnlyCallable ($ haystack , $ message );
241+ }
242+
243+ protected function assertContainsOnlyFloat (iterable $ haystack , string $ message = '' ): void
244+ {
245+ Assert ::assertContainsOnlyFloat ($ haystack , $ message );
246+ }
247+
248+ protected function assertContainsOnlyInt (iterable $ haystack , string $ message = '' ): void
249+ {
250+ Assert ::assertContainsOnlyInt ($ haystack , $ message );
251+ }
252+
253+ protected function assertContainsOnlyIterable (iterable $ haystack , string $ message = '' ): void
254+ {
255+ Assert ::assertContainsOnlyIterable ($ haystack , $ message );
256+ }
257+
258+ protected function assertContainsOnlyNull (iterable $ haystack , string $ message = '' ): void
259+ {
260+ Assert ::assertContainsOnlyNull ($ haystack , $ message );
261+ }
262+
263+ protected function assertContainsOnlyNumeric (iterable $ haystack , string $ message = '' ): void
264+ {
265+ Assert ::assertContainsOnlyNumeric ($ haystack , $ message );
266+ }
267+
268+ protected function assertContainsOnlyObject (iterable $ haystack , string $ message = '' ): void
269+ {
270+ Assert ::assertContainsOnlyObject ($ haystack , $ message );
271+ }
272+
273+ protected function assertContainsOnlyResource (iterable $ haystack , string $ message = '' ): void
274+ {
275+ Assert ::assertContainsOnlyResource ($ haystack , $ message );
276+ }
277+
278+ protected function assertContainsOnlyClosedResource (iterable $ haystack , string $ message = '' ): void
279+ {
280+ Assert ::assertContainsOnlyClosedResource ($ haystack , $ message );
281+ }
282+
283+ protected function assertContainsOnlyScalar (iterable $ haystack , string $ message = '' ): void
284+ {
285+ Assert ::assertContainsOnlyScalar ($ haystack , $ message );
286+ }
287+
288+ protected function assertContainsOnlyString (iterable $ haystack , string $ message = '' ): void
289+ {
290+ Assert ::assertContainsOnlyString ($ haystack , $ message );
291+ }
121292
122293 /**
123294 * Asserts the number of elements of an array, Countable or Traversable.
@@ -838,9 +1009,73 @@ protected function assertNotContains(mixed $needle, iterable $haystack, string $
8381009 */
8391010 protected function assertNotContainsOnly (string $ type , iterable $ haystack , ?bool $ isNativeType = null , string $ message = '' ): void
8401011 {
841- Assert ::assertNotContainsOnly ($ type , $ haystack , $ isNativeType , $ message );
1012+ $ isNativeType ??= self ::isNativeType ($ type );
1013+
1014+ if ($ isNativeType ) {
1015+ $ replacement = match ($ type ) {
1016+ 'array ' => 'assertContainsNotOnlyArray ' ,
1017+ 'bool ' , 'boolean ' => 'assertContainsNotOnlyBool ' ,
1018+ 'callable ' => 'assertContainsNotOnlyCallable ' ,
1019+ 'double ' , 'float ' , 'real ' => 'assertContainsNotOnlyFloat ' ,
1020+ 'int ' , 'integer ' => 'assertContainsNotOnlyInt ' ,
1021+ 'iterable ' => 'assertContainsNotOnlyIterable ' ,
1022+ 'null ' => 'assertContainsNotOnlyNull ' ,
1023+ 'numeric ' => 'assertContainsNotOnlyNumeric ' ,
1024+ 'object ' => 'assertContainsNotOnlyObject ' ,
1025+ 'resource ' => 'assertContainsNotOnlyResource ' ,
1026+ 'resource (closed) ' => 'assertContainsNotOnlyClosedResource ' ,
1027+ 'scalar ' => 'assertContainsNotOnlyScalar ' ,
1028+ 'string ' => 'assertContainsNotOnlyString ' ,
1029+ };
1030+
1031+ trigger_error (
1032+ sprintf (
1033+ '%s is deprecated since PHPUnit 11.5. Please use %s($haystack) instead of assertContainsNotOnly( \'%s \', $haystack) ' ,
1034+ __FUNCTION__ ,
1035+ $ replacement ,
1036+ $ type ,
1037+ ),
1038+ E_USER_DEPRECATED ,
1039+ );
1040+
1041+ $ this ->$ replacement ($ haystack , $ message );
1042+ } else {
1043+ trigger_error (
1044+ sprintf (
1045+ 'assertNotContainsOnly() is deprecated since PHPUnit 11.5. Please use assertContainsNotOnlyInstancesOf( \'%s \', $haystack) instead of assertNotContainsOnly( \'%s \', $haystack). ' ,
1046+ $ type ,
1047+ $ type ,
1048+ ),
1049+ E_USER_DEPRECATED ,
1050+ );
1051+
1052+ Assert ::assertContainsNotOnlyInstancesOf ($ type , $ haystack , $ message );
1053+ }
8421054 }
8431055
1056+ private static function isNativeType (string $ type ): bool
1057+ {
1058+ return in_array ($ type , [
1059+ 'array ' ,
1060+ 'bool ' ,
1061+ 'boolean ' ,
1062+ 'callable ' ,
1063+ 'double ' ,
1064+ 'float ' ,
1065+ 'int ' ,
1066+ 'integer ' ,
1067+ 'iterable ' ,
1068+ 'null ' ,
1069+ 'numeric ' ,
1070+ 'object ' ,
1071+ 'real ' ,
1072+ 'resource ' ,
1073+ 'resource (closed) ' ,
1074+ 'scalar ' ,
1075+ 'string ' ,
1076+ ]);
1077+ }
1078+
8441079 /**
8451080 * Asserts the number of elements of an array, Countable or Traversable.
8461081 *
0 commit comments