@@ -45,6 +45,7 @@ final class PropertyTypeHandlingTest extends TestCase
4545 * @param mixed $expected Expected property value.
4646 *
4747 * @dataProvider dataTypeHandling
48+ * @dataProvider dataArrayPropertyExtending
4849 *
4950 * @return void
5051 */
@@ -80,6 +81,7 @@ public function testTypeHandlingWhenSetInline($propertyName, $expected)
8081 * Data provider.
8182 *
8283 * @see self::testTypeHandlingWhenSetViaRuleset()
84+ * @see self::testTypeHandlingWhenSetInline()
8385 *
8486 * @return array<string, array<string, mixed>>
8587 */
@@ -102,99 +104,120 @@ public static function dataTypeHandling()
102104 'false ' => 'false ' ,
103105 ];
104106
105- $ expectedArrayOnlyValuesExtended = [
106- 'string ' ,
107- '15 ' ,
108- 'another string ' ,
109- ];
110- $ expectedArrayKeysAndValuesExtended = [
111- 10 => '10 ' ,
112- 'string ' => 'string ' ,
113- 15 => '15 ' ,
114- 'another string ' => 'another string ' ,
115- ];
116-
117107 return [
118- 'String value (default) ' => [
108+ 'String value (default) ' => [
119109 'propertyName ' => 'expectsString ' ,
120110 'expected ' => 'arbitraryvalue ' ,
121111 ],
122- 'String value with whitespace gets trimmed ' => [
112+ 'String value with whitespace gets trimmed ' => [
123113 'propertyName ' => 'expectsTrimmedString ' ,
124114 'expected ' => 'some value ' ,
125115 ],
126- 'String with whitespace only value becomes null ' => [
116+ 'String with whitespace only value becomes null ' => [
127117 'propertyName ' => 'emptyStringBecomesNull ' ,
128118 'expected ' => null ,
129119 ],
130- 'Integer value gets set as string ' => [
120+ 'Integer value gets set as string ' => [
131121 'propertyName ' => 'expectsIntButAcceptsString ' ,
132122 'expected ' => '12345 ' ,
133123 ],
134- 'Float value gets set as string ' => [
124+ 'Float value gets set as string ' => [
135125 'propertyName ' => 'expectsFloatButAcceptsString ' ,
136126 'expected ' => '12.345 ' ,
137127 ],
138- 'Null value gets set as string ' => [
128+ 'Null value gets set as string ' => [
139129 'propertyName ' => 'expectsNull ' ,
140130 'expected ' => 'null ' ,
141131 ],
142- 'Null (uppercase) value gets set as string ' => [
132+ 'Null (uppercase) value gets set as string ' => [
143133 'propertyName ' => 'expectsNullCase ' ,
144134 'expected ' => 'NULL ' ,
145135 ],
146- 'True value gets set as boolean ' => [
136+ 'True value gets set as boolean ' => [
147137 'propertyName ' => 'expectsBooleanTrue ' ,
148138 'expected ' => true ,
149139 ],
150- 'True (mixed case) value gets set as string ' => [
140+ 'True (mixed case) value gets set as string ' => [
151141 'propertyName ' => 'expectsBooleanTrueCase ' ,
152142 'expected ' => 'True ' ,
153143 ],
154- 'True (with spaces) value gets set as boolean ' => [
144+ 'True (with spaces) value gets set as boolean ' => [
155145 'propertyName ' => 'expectsBooleanTrueTrimmed ' ,
156146 'expected ' => true ,
157147 ],
158- 'False value gets set as boolean ' => [
148+ 'False value gets set as boolean ' => [
159149 'propertyName ' => 'expectsBooleanFalse ' ,
160150 'expected ' => false ,
161151 ],
162- 'False (mixed case) value gets set as string ' => [
152+ 'False (mixed case) value gets set as string ' => [
163153 'propertyName ' => 'expectsBooleanFalseCase ' ,
164154 'expected ' => 'fALSe ' ,
165155 ],
166- 'False (with spaces) value gets set as boolean ' => [
156+ 'False (with spaces) value gets set as boolean ' => [
167157 'propertyName ' => 'expectsBooleanFalseTrimmed ' ,
168158 'expected ' => false ,
169159 ],
170- 'Array with only values (new style) ' => [
160+ 'Array with only values (new style) ' => [
171161 'propertyName ' => 'expectsArrayWithOnlyValues ' ,
172162 'expected ' => $ expectedArrayOnlyValues ,
173163 ],
174- 'Array with keys and values (new style) ' => [
164+ 'Array with keys and values (new style) ' => [
175165 'propertyName ' => 'expectsArrayWithKeysAndValues ' ,
176166 'expected ' => $ expectedArrayKeysAndValues ,
177167 ],
178- 'Array with only values extended (new style) ' => [
179- 'propertyName ' => 'expectsArrayWithExtendedValues ' ,
180- 'expected ' => $ expectedArrayOnlyValuesExtended ,
181- ],
182- 'Array with keys and values extended (new style) ' => [
183- 'propertyName ' => 'expectsArrayWithExtendedKeysAndValues ' ,
184- 'expected ' => $ expectedArrayKeysAndValuesExtended ,
185- ],
186- 'Empty array (new style) ' => [
168+ 'Empty array (new style) ' => [
187169 'propertyName ' => 'expectsEmptyArray ' ,
188170 'expected ' => [],
189171 ],
190- 'Array with only values (old style) ' => [
172+ 'Array with only values (old style) ' => [
191173 'propertyName ' => 'expectsOldSchoolArrayWithOnlyValues ' ,
192174 'expected ' => $ expectedArrayOnlyValues ,
193175 ],
194- 'Array with keys and values (old style) ' => [
176+ 'Array with keys and values (old style) ' => [
195177 'propertyName ' => 'expectsOldSchoolArrayWithKeysAndValues ' ,
196178 'expected ' => $ expectedArrayKeysAndValues ,
197179 ],
180+ 'Empty array (old style) ' => [
181+ 'propertyName ' => 'expectsOldSchoolEmptyArray ' ,
182+ 'expected ' => [],
183+ ],
184+ ];
185+
186+ }//end dataTypeHandling()
187+
188+
189+ /**
190+ * Data provider.
191+ *
192+ * Array property extending is a feature which is only supported from a ruleset, not for inline property setting.
193+ *
194+ * @see self::testTypeHandlingWhenSetViaRuleset()
195+ *
196+ * @return array<string, array<string, mixed>>
197+ */
198+ public static function dataArrayPropertyExtending ()
199+ {
200+ $ expectedArrayOnlyValuesExtended = [
201+ 'string ' ,
202+ '15 ' ,
203+ 'another string ' ,
204+ ];
205+ $ expectedArrayKeysAndValuesExtended = [
206+ 10 => '10 ' ,
207+ 'string ' => 'string ' ,
208+ 15 => '15 ' ,
209+ 'another string ' => 'another string ' ,
210+ ];
211+
212+ return [
213+ 'Array with only values extended (new style) ' => [
214+ 'propertyName ' => 'expectsArrayWithExtendedValues ' ,
215+ 'expected ' => $ expectedArrayOnlyValuesExtended ,
216+ ],
217+ 'Array with keys and values extended (new style) ' => [
218+ 'propertyName ' => 'expectsArrayWithExtendedKeysAndValues ' ,
219+ 'expected ' => $ expectedArrayKeysAndValuesExtended ,
220+ ],
198221 'Array with only values extended (old style) ' => [
199222 'propertyName ' => 'expectsOldSchoolArrayWithExtendedValues ' ,
200223 'expected ' => $ expectedArrayOnlyValuesExtended ,
@@ -203,13 +226,9 @@ public static function dataTypeHandling()
203226 'propertyName ' => 'expectsOldSchoolArrayWithExtendedKeysAndValues ' ,
204227 'expected ' => $ expectedArrayKeysAndValuesExtended ,
205228 ],
206- 'Empty array (old style) ' => [
207- 'propertyName ' => 'expectsOldSchoolEmptyArray ' ,
208- 'expected ' => [],
209- ],
210229 ];
211230
212- }//end dataTypeHandling ()
231+ }//end dataArrayPropertyExtending ()
213232
214233
215234 /**
@@ -225,7 +244,7 @@ private function getSniffObjectForRuleset()
225244
226245 if (isset ($ sniffObject ) === false ) {
227246 // Set up the ruleset.
228- $ standard = __DIR__ ." /PropertyTypeHandlingTest.xml " ;
247+ $ standard = __DIR__ .' /PropertyTypeHandlingTest.xml ' ;
229248 $ config = new ConfigDouble (["--standard= $ standard " ]);
230249 $ ruleset = new Ruleset ($ config );
231250
@@ -255,7 +274,7 @@ private function getSniffObjectAfterProcessingFile()
255274
256275 if (isset ($ sniffObject ) === false ) {
257276 // Set up the ruleset.
258- $ standard = __DIR__ ." /PropertyTypeHandlingInlineTest.xml " ;
277+ $ standard = __DIR__ .' /PropertyTypeHandlingInlineTest.xml ' ;
259278 $ config = new ConfigDouble (["--standard= $ standard " ]);
260279 $ ruleset = new Ruleset ($ config );
261280
0 commit comments