1--TEST--
2Test array_fill() function : usage variations - various object values for 'val' argument
3--FILE--
4<?php
5/*
6 * testing array_fill() by passing various  object values for 'val' argument
7 */
8
9echo "*** Testing array_fill() : usage variations ***\n";
10
11// Initialise function arguments not being substituted
12$start_key = 0;
13$num = 2;
14
15// class without a member
16class Test
17{
18}
19
20//class with public member, static member , constant and consturctor to initialize the public member
21class Test1
22{
23  const test1_constant = "test1";
24  public static $test1_static = 0;
25  public $member1;
26  var $var1 = 30;
27  var $var2;
28
29  function __construct($value1 , $value2)
30  {
31    $this->member1 = $value1;
32    $this->var2 = $value2;
33  }
34}
35
36// child class which inherits parent class test1
37class Child_test1 extends Test1
38{
39  public $member2;
40
41  function __construct($value1 , $value2 , $value3)
42  {
43    parent::__construct($value1 , $value2);
44    $this->member2 = $value3;
45  }
46}
47
48//class with private member, static member, constant and constructor to initialize the private member
49class Test2
50{
51  const test2_constant = "test2";
52  public static $test2_static = 0;
53  private $member1;
54  var $var1 = 30;
55  var $var2;
56
57  function __construct($value1 , $value2)
58  {
59    $this->member1 = $value1;
60    $this->var2 = $value2;
61  }
62}
63
64// child class which inherits parent class test2
65class Child_test2 extends Test2
66{
67  private $member1;
68
69  function __construct($value1 , $value2 , $value3)
70  {
71    parent::__construct($value1 , $value2);
72    $this->member1 = $value3;
73  }
74}
75
76// class with protected member, static member, constant and consturctor to initialize the protected member
77class Test3
78{
79  const test3_constant = "test3";
80  public static $test3_static = 0;
81  protected $member1;
82  var $var1 = 30;
83  var $var2;
84
85  function __construct($value1 , $value2)
86  {
87     $this->member1 = $value1;
88     $this->var2 = $value2;
89  }
90}
91
92// child class which inherits parent class test3
93class Child_test3 extends Test3
94{
95  protected $member1;
96
97  function __construct($value1 , $value2 , $value3)
98  {
99    parent::__construct($value1 , $value2);
100    $this->member1 = $value3;
101  }
102}
103
104// class with public, private, protected members, static, constant members and constructor to initialize all the members
105class Test4
106{
107  const test4_constant = "test4";
108  public static $test4_static = 0;
109  public $member1;
110  private $member2;
111  protected $member3;
112
113  function __construct($value1 , $value2 , $value3)
114  {
115    $this->member1 = $value1;
116    $this->member2 = $value2;
117    $this->member3 = $value3;
118  }
119}
120
121// child class which inherits parent class test4
122class Child_test4 extends Test4
123{
124  var $var1;
125
126  function __construct($value1 , $value2 , $value3 , $value4)
127  {
128    parent::__construct($value1 , $value2 , $value3);
129    $this->var1 = $value4;
130  }
131}
132
133// abstract class with public, private, protected members
134abstract class AbstractClass
135{
136  public $member1;
137  private $member2;
138  protected $member3;
139  var $var1 = 30;
140
141  abstract protected function display();
142}
143
144// implement abstract 'AbstractClass' class
145class ConcreteClass1 extends AbstractClass
146{
147  protected function display()
148  {
149    echo "class name is ConcreteClass1 \n";
150  }
151}
152
153
154// declarationn of the interface 'iTemplate'
155interface iTemplate
156{
157  public function display();
158}
159
160// implement the interface 'iTemplate'
161class Template1 implements iTemplate
162{
163  public function display()
164  {
165    echo "class name is Template1\n";
166  }
167}
168
169//array of object values for 'val' argument
170$objects = array(
171
172  /* 1  */  new Test(),
173            new Test1(100 , 101),
174            new Child_test1(100 , 101 , 102),
175            new Test2(100 , 101),
176  /* 5  */  new Child_test2(100 , 101 , 102),
177            new Test3(100 , 101),
178            new Child_test3(100 , 101 , 102),
179            new Test4( 100 , 101 , 102),
180            new Child_test4(100 , 101 , 102 , 103),
181            new ConcreteClass1(),
182  /* 11 */  new Template1()
183);
184
185// loop through each element of the array for 'val' argument
186// check the working of array_fill()
187echo "--- Testing array_fill() with different object values for 'val' argument ---\n";
188$counter = 1;
189for($index = 0; $index < count($objects); $index ++)
190{
191  echo "-- Iteration $counter --\n";
192  $val = $objects[$index];
193
194  var_dump( array_fill($start_key,$num,$val) );
195
196  $counter++;
197}
198
199echo "Done";
200?>
201--EXPECTF--
202*** Testing array_fill() : usage variations ***
203--- Testing array_fill() with different object values for 'val' argument ---
204-- Iteration 1 --
205array(2) {
206  [0]=>
207  object(Test)#%d (0) {
208  }
209  [1]=>
210  object(Test)#%d (0) {
211  }
212}
213-- Iteration 2 --
214array(2) {
215  [0]=>
216  object(Test1)#%d (3) {
217    ["member1"]=>
218    int(100)
219    ["var1"]=>
220    int(30)
221    ["var2"]=>
222    int(101)
223  }
224  [1]=>
225  object(Test1)#%d (3) {
226    ["member1"]=>
227    int(100)
228    ["var1"]=>
229    int(30)
230    ["var2"]=>
231    int(101)
232  }
233}
234-- Iteration 3 --
235array(2) {
236  [0]=>
237  object(Child_test1)#%d (4) {
238    ["member1"]=>
239    int(100)
240    ["var1"]=>
241    int(30)
242    ["var2"]=>
243    int(101)
244    ["member2"]=>
245    int(102)
246  }
247  [1]=>
248  object(Child_test1)#%d (4) {
249    ["member1"]=>
250    int(100)
251    ["var1"]=>
252    int(30)
253    ["var2"]=>
254    int(101)
255    ["member2"]=>
256    int(102)
257  }
258}
259-- Iteration 4 --
260array(2) {
261  [0]=>
262  object(Test2)#%d (3) {
263    ["member1":"Test2":private]=>
264    int(100)
265    ["var1"]=>
266    int(30)
267    ["var2"]=>
268    int(101)
269  }
270  [1]=>
271  object(Test2)#%d (3) {
272    ["member1":"Test2":private]=>
273    int(100)
274    ["var1"]=>
275    int(30)
276    ["var2"]=>
277    int(101)
278  }
279}
280-- Iteration 5 --
281array(2) {
282  [0]=>
283  object(Child_test2)#%d (4) {
284    ["member1":"Test2":private]=>
285    int(100)
286    ["var1"]=>
287    int(30)
288    ["var2"]=>
289    int(101)
290    ["member1":"Child_test2":private]=>
291    int(102)
292  }
293  [1]=>
294  object(Child_test2)#%d (4) {
295    ["member1":"Test2":private]=>
296    int(100)
297    ["var1"]=>
298    int(30)
299    ["var2"]=>
300    int(101)
301    ["member1":"Child_test2":private]=>
302    int(102)
303  }
304}
305-- Iteration 6 --
306array(2) {
307  [0]=>
308  object(Test3)#%d (3) {
309    ["member1":protected]=>
310    int(100)
311    ["var1"]=>
312    int(30)
313    ["var2"]=>
314    int(101)
315  }
316  [1]=>
317  object(Test3)#%d (3) {
318    ["member1":protected]=>
319    int(100)
320    ["var1"]=>
321    int(30)
322    ["var2"]=>
323    int(101)
324  }
325}
326-- Iteration 7 --
327array(2) {
328  [0]=>
329  object(Child_test3)#%d (3) {
330    ["member1":protected]=>
331    int(102)
332    ["var1"]=>
333    int(30)
334    ["var2"]=>
335    int(101)
336  }
337  [1]=>
338  object(Child_test3)#%d (3) {
339    ["member1":protected]=>
340    int(102)
341    ["var1"]=>
342    int(30)
343    ["var2"]=>
344    int(101)
345  }
346}
347-- Iteration 8 --
348array(2) {
349  [0]=>
350  object(Test4)#%d (3) {
351    ["member1"]=>
352    int(100)
353    ["member2":"Test4":private]=>
354    int(101)
355    ["member3":protected]=>
356    int(102)
357  }
358  [1]=>
359  object(Test4)#%d (3) {
360    ["member1"]=>
361    int(100)
362    ["member2":"Test4":private]=>
363    int(101)
364    ["member3":protected]=>
365    int(102)
366  }
367}
368-- Iteration 9 --
369array(2) {
370  [0]=>
371  object(Child_test4)#%d (4) {
372    ["member1"]=>
373    int(100)
374    ["member2":"Test4":private]=>
375    int(101)
376    ["member3":protected]=>
377    int(102)
378    ["var1"]=>
379    int(103)
380  }
381  [1]=>
382  object(Child_test4)#%d (4) {
383    ["member1"]=>
384    int(100)
385    ["member2":"Test4":private]=>
386    int(101)
387    ["member3":protected]=>
388    int(102)
389    ["var1"]=>
390    int(103)
391  }
392}
393-- Iteration 10 --
394array(2) {
395  [0]=>
396  object(ConcreteClass1)#%d (4) {
397    ["member1"]=>
398    NULL
399    ["member2":"AbstractClass":private]=>
400    NULL
401    ["member3":protected]=>
402    NULL
403    ["var1"]=>
404    int(30)
405  }
406  [1]=>
407  object(ConcreteClass1)#%d (4) {
408    ["member1"]=>
409    NULL
410    ["member2":"AbstractClass":private]=>
411    NULL
412    ["member3":protected]=>
413    NULL
414    ["var1"]=>
415    int(30)
416  }
417}
418-- Iteration 11 --
419array(2) {
420  [0]=>
421  object(Template1)#%d (0) {
422  }
423  [1]=>
424  object(Template1)#%d (0) {
425  }
426}
427Done
428