@@ -203,14 +203,84 @@ public static function dataArrayPropertyExtending()
203203 ];
204204
205205 return [
206- 'Array with only values extended ' => [
206+ 'Array with only values extended ' => [
207207 'propertyName ' => 'expectsArrayWithExtendedValues ' ,
208208 'expected ' => $ expectedArrayOnlyValuesExtended ,
209209 ],
210- 'Array with keys and values extended ' => [
210+ 'Array with keys and values extended ' => [
211211 'propertyName ' => 'expectsArrayWithExtendedKeysAndValues ' ,
212212 'expected ' => $ expectedArrayKeysAndValuesExtended ,
213213 ],
214+
215+ 'Empty array in ruleset overrules existing value ' => [
216+ 'propertyName ' => 'expectsNonEmptyArrayOverruledToEmpty ' ,
217+ 'expected ' => [],
218+ ],
219+ 'Non empty array in ruleset overrules existing value ' => [
220+ 'propertyName ' => 'expectsNonEmptyArrayOverruledToNewValue ' ,
221+ 'expected ' => ['another key ' => 'another value ' ],
222+ ],
223+
224+ 'Extending pre-existing value when there is no value ' => [
225+ 'propertyName ' => 'expectsExtendsWillJustSetToArrayWhenNoDefaultValuePresent ' ,
226+ 'expected ' => ['foo ' => 'bar ' ],
227+ ],
228+ 'Extending pre-existing non-array value will overrule ' => [
229+ 'propertyName ' => 'expectsExtendsWillOverruleNonArrayToNewArrayValue ' ,
230+ 'expected ' => ['phpcbf ' ],
231+ ],
232+ 'Non empty array extended by non-empty array ' => [
233+ 'propertyName ' => 'expectsNonEmptyArrayExtendedWithNonEmptyArray ' ,
234+ 'expected ' => [
235+ 'key ' => 'value ' ,
236+ 'another key ' => 'another value ' ,
237+ ],
238+ ],
239+ 'Non empty array keeps value when extended by empty array ' => [
240+ 'propertyName ' => 'expectsNonEmptyArrayKeepsValueWhenExtendedWithEmptyArray ' ,
241+ 'expected ' => ['key ' => 'value ' ],
242+ ],
243+
244+ 'Non empty array double extended get both additions ' => [
245+ 'propertyName ' => 'expectsNonEmptyArrayDoubleExtendedWithNonEmptyArray ' ,
246+ 'expected ' => [
247+ 'key ' => 'value ' ,
248+ 'foo ' => 'bar ' ,
249+ 'bar ' => 'baz ' ,
250+ 'baz ' => 'boo ' ,
251+ ],
252+ ],
253+
254+ 'Values in non empty associative array can be redefined ' => [
255+ 'propertyName ' => 'expectsValuesInNonEmptyAssociativeArrayCanBeRedefined ' ,
256+ 'expected ' => [
257+ 'foo ' => 'bar ' ,
258+ 'bar ' => 'foo ' ,
259+ ],
260+ ],
261+ 'Values in non empty numerically indexed array are not overwritten ' => [
262+ 'propertyName ' => 'expectsValuesInNonEmptyNumericallyIndexedArrayAreNotOverwritten ' ,
263+ 'expected ' => [
264+ 'valueA ' ,
265+ 'valueB ' ,
266+ 'valueC ' ,
267+ ],
268+ ],
269+ 'Original values are untouched, while new values get cleaned ' => [
270+ 'propertyName ' => 'expectsPreexistingValuesStayTheSameWhileNewValuesGetCleaned ' ,
271+ 'expected ' => [
272+ 'predefinedA ' => 'true ' ,
273+ 'predefinedB ' => ' null ' ,
274+ 'newValueA ' => false ,
275+ 'newValueB ' => null ,
276+ '1.5 ' , // phpcs:ignore Squiz.Arrays.ArrayDeclaration.NoKeySpecified -- That is largely what we are testing...
277+ true ,
278+ ],
279+ ],
280+ 'Invalid "extend" used on a non-array property ' => [
281+ 'propertyName ' => 'expectsStringNotArray ' ,
282+ 'expected ' => 'some value ' ,
283+ ],
214284 ];
215285
216286 }//end dataArrayPropertyExtending()
0 commit comments