@@ -165,4 +165,122 @@ public function testGetArgumentsNotDefined()
165
165
{
166
166
$ this ->assertSame (null , $ this ->compiled ->getArguments ('class_not_stored_in_config ' ));
167
167
}
168
+
169
+ /**
170
+ * Test that $arguments, $virtualTypes and $preferences initializing in construct must be array.
171
+ *
172
+ * @param $data
173
+ * @param array $expectedResult
174
+ *
175
+ * @dataProvider constructorFieldsValidation
176
+ */
177
+ public function testConstructorFieldsValidation ($ data , $ expectedResult )
178
+ {
179
+ /** @var Compiled $compiled */
180
+ $ compiled = $ this ->objectManager ->getObject (
181
+ Compiled::class,
182
+ [
183
+ 'data ' => $ data
184
+ ]
185
+ );
186
+
187
+ $ reflection = new \ReflectionClass (Compiled::class);
188
+ $ arguments = $ reflection ->getProperty ('arguments ' );
189
+ $ arguments ->setAccessible (true );
190
+
191
+ $ this ->assertEquals ($ expectedResult ['arguments ' ], $ arguments ->getValue ($ compiled ));
192
+ $ this ->assertEquals ($ expectedResult ['preferences ' ], $ compiled ->getPreferences ());
193
+ $ this ->assertEquals ($ expectedResult ['instanceTypes ' ], $ compiled ->getVirtualTypes ());
194
+ }
195
+
196
+ /**
197
+ * Data provider for testConstructorFieldsValidation.
198
+ *
199
+ * @return array
200
+ */
201
+ public function constructorFieldsValidation ()
202
+ {
203
+ return [
204
+ [
205
+ 'no array ' ,
206
+ [
207
+ 'arguments ' => [],
208
+ 'instanceTypes ' => [],
209
+ 'preferences ' => []
210
+ ]
211
+ ],
212
+ [
213
+ [
214
+ 'arguments ' => 1 ,
215
+ 'instanceTypes ' => [1 , 2 , 3 ],
216
+ 'preferences ' => 'test '
217
+ ],
218
+ [
219
+ 'arguments ' => [],
220
+ 'instanceTypes ' => [1 , 2 , 3 ],
221
+ 'preferences ' => []
222
+ ]
223
+ ]
224
+ ];
225
+ }
226
+
227
+ /**
228
+ * Test that $arguments, $virtualTypes and $preferences initializing in extend must be array.
229
+ *
230
+ * @param $data
231
+ * @param array $expectedResult
232
+ *
233
+ * @dataProvider extendFieldsValidation
234
+ */
235
+ public function testExtendFieldsValidation ($ data , $ expectedResult )
236
+ {
237
+ /** @var Compiled $compiled */
238
+ $ compiled = $ this ->objectManager ->getObject (
239
+ Compiled::class,
240
+ [
241
+ 'data ' => $ data
242
+ ]
243
+ );
244
+
245
+ $ compiled ->extend ($ data );
246
+
247
+ $ reflection = new \ReflectionClass (Compiled::class);
248
+ $ arguments = $ reflection ->getProperty ('arguments ' );
249
+ $ arguments ->setAccessible (true );
250
+
251
+ $ this ->assertEquals ($ expectedResult ['arguments ' ], $ arguments ->getValue ($ compiled ));
252
+ $ this ->assertEquals ($ expectedResult ['preferences ' ], $ compiled ->getPreferences ());
253
+ $ this ->assertEquals ($ expectedResult ['instanceTypes ' ], $ compiled ->getVirtualTypes ());
254
+ }
255
+
256
+ /**
257
+ * Data provider for testExtendFieldsValidation.
258
+ *
259
+ * @return array
260
+ */
261
+ public function extendFieldsValidation ()
262
+ {
263
+ return [
264
+ [
265
+ [],
266
+ [
267
+ 'arguments ' => [],
268
+ 'instanceTypes ' => [],
269
+ 'preferences ' => []
270
+ ]
271
+ ],
272
+ [
273
+ [
274
+ 'arguments ' => 1 ,
275
+ 'instanceTypes ' => [1 , 2 , 3 ],
276
+ 'preferences ' => 'test '
277
+ ],
278
+ [
279
+ 'arguments ' => [],
280
+ 'instanceTypes ' => [1 , 2 , 3 ],
281
+ 'preferences ' => []
282
+ ]
283
+ ]
284
+ ];
285
+ }
168
286
}
0 commit comments