Skip to content

Commit 1256d74

Browse files
authored
Zend/tests/offsets: add tests for taking references (#13496)
1 parent e84acc0 commit 1256d74

11 files changed

+541
-284
lines changed

Zend/tests/offsets/ArrayAccess_container_offset_behaviour.phpt

+15-4
Original file line numberDiff line numberDiff line change
@@ -40,26 +40,37 @@ VAR_DUMP_OF_OFFSET
4040
string(12) "CLASS_NAME::offsetGet"
4141
VAR_DUMP_OF_OFFSET
4242
int(5)
43+
Reference to dimension:
44+
string(12) "CLASS_NAME::offsetGet"
45+
VAR_DUMP_OF_OFFSET
46+
47+
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 55
48+
Value of reference:
49+
int(5)
50+
Value of container dimension after write to reference (should be int(100) if successful):
51+
string(12) "CLASS_NAME::offsetGet"
52+
VAR_DUMP_OF_OFFSET
53+
int(5)
4354
unset():
4455
string(14) "CLASS_NAME::offsetUnset"
4556
VAR_DUMP_OF_OFFSET
4657
Nested read:
4758
string(12) "CLASS_NAME::offsetGet"
4859
VAR_DUMP_OF_OFFSET
4960
50-
Warning: Trying to access array offset on int in %s on line 62
61+
Warning: Trying to access array offset on int in %s on line 74
5162
NULL
5263
Nested write:
5364
string(12) "CLASS_NAME::offsetGet"
5465
VAR_DUMP_OF_OFFSET
5566
56-
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 69
67+
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 81
5768
Cannot use a scalar value as an array
5869
Nested Read-Write:
5970
string(12) "CLASS_NAME::offsetGet"
6071
VAR_DUMP_OF_OFFSET
6172
62-
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 76
73+
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 88
6374
Cannot use a scalar value as an array
6475
Nested isset():
6576
string(15) "CLASS_NAME::offsetExists"
@@ -83,7 +94,7 @@ Nested unset():
8394
string(12) "CLASS_NAME::offsetGet"
8495
VAR_DUMP_OF_OFFSET
8596
86-
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 102
97+
Notice: Indirect modification of overloaded element of CLASS_NAME has no effect in %s on line 114
8798
Cannot unset offset in a non-array variable
8899
89100
OUTPUT;

Zend/tests/offsets/ArrayObject_container_offset_behaviour.phpt

+76-46
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ require_once __DIR__ . DIRECTORY_SEPARATOR . 'test_offset_helpers.inc';
88
const EXPECTED_OUTPUT_VALID_OFFSETS = <<<OUTPUT
99
Read before write:
1010
11-
Warning: Undefined array key %s in %s on line 8
11+
Warning: Undefined array key %s in %s on line %d
1212
NULL
1313
Write:
1414
Read:
@@ -20,12 +20,17 @@ empty():
2020
bool(false)
2121
null coalesce:
2222
int(25)
23+
Reference to dimension:
24+
Value of reference:
25+
int(25)
26+
Value of container dimension after write to reference (should be int(100) if successful):
27+
int(100)
2328
unset():
2429
Nested read:
2530
26-
Warning: Undefined array key %s in %s on line 62
31+
Warning: Undefined array key %s in %s on line %d
2732
28-
Warning: Trying to access array offset on null in %s on line 62
33+
Warning: Trying to access array offset on null in %s on line %d
2934
NULL
3035
Nested write:
3136
Nested Read-Write:
@@ -43,76 +48,85 @@ $EXPECTED_OUTPUT_VALID_OFFSETS_REGEX = '/^' . expectf_to_regex(EXPECTED_OUTPUT_V
4348
const EXPECTF_OUTPUT_FLOAT_OFFSETS = <<<OUTPUT
4449
Read before write:
4550
46-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 8
51+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
4752
48-
Warning: Undefined array key %s in %s on line 8
53+
Warning: Undefined array key %s in %s on line %d
4954
NULL
5055
Write:
5156
52-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 15
57+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
5358
Read:
5459
55-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 22
60+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
5661
int(15)
5762
Read-Write:
5863
59-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 29
64+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
6065
isset():
6166
62-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 36
67+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
6368
bool(true)
6469
empty():
6570
66-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 42
71+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
6772
bool(false)
6873
null coalesce:
6974
70-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 48
75+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
76+
int(35)
77+
Reference to dimension:
78+
79+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
80+
Value of reference:
7181
int(35)
82+
Value of container dimension after write to reference (should be int(100) if successful):
83+
84+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
85+
int(100)
7286
unset():
7387
74-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 55
88+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
7589
Nested read:
7690
77-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 62
91+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
7892
79-
Warning: Undefined array key 0 in %s on line 62
93+
Warning: Undefined array key 0 in %s on line %d
8094
81-
Warning: Trying to access array offset on null in %s on line 62
95+
Warning: Trying to access array offset on null in %s on line %d
8296
NULL
8397
Nested write:
8498
85-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 69
99+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
86100
87-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 69
101+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
88102
Nested Read-Write:
89103
90-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 76
104+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
91105
92-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 76
106+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
93107
Nested isset():
94108
95-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 83
109+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
96110
97-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 83
111+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
98112
bool(true)
99113
Nested empty():
100114
101-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 89
115+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
102116
103-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 89
117+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
104118
bool(false)
105119
Nested null coalesce:
106120
107-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 95
121+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
108122
109-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 95
123+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
110124
int(25)
111125
Nested unset():
112126
113-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 102
127+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
114128
115-
Deprecated: Implicit conversion from float %F to int loses precision in %s on line 102
129+
Deprecated: Implicit conversion from float %F to int loses precision in %s on line %d
116130
117131
OUTPUT;
118132

@@ -133,6 +147,8 @@ empty():
133147
Cannot access offset of type %s in isset or empty
134148
null coalesce:
135149
Cannot access offset of type %s in isset or empty
150+
Reference to dimension:
151+
Cannot access offset of type %s on ArrayObject
136152
unset():
137153
Cannot unset offset of type %s on ArrayObject
138154
Nested read:
@@ -149,7 +165,7 @@ Nested null coalesce:
149165
Cannot access offset of type %s in isset or empty
150166
Nested unset():
151167
152-
Notice: Indirect modification of overloaded element of ArrayObject has no effect in %s on line 102
168+
Notice: Indirect modification of overloaded element of ArrayObject has no effect in %s on line %d
153169
Cannot unset offset of type %s on ArrayObject
154170
155171
OUTPUT;
@@ -175,12 +191,17 @@ empty():
175191
bool(true)
176192
null coalesce:
177193
string(7) "default"
194+
Reference to dimension:
195+
Value of reference:
196+
NULL
197+
Value of container dimension after write to reference (should be int(100) if successful):
198+
int(100)
178199
unset():
179200
Nested read:
180201
181-
Warning: Undefined array key "" in %s on line 62
202+
Warning: Undefined array key "" in %s on line 74
182203
183-
Warning: Trying to access array offset on null in %s on line 62
204+
Warning: Trying to access array offset on null in %s on line 74
184205
NULL
185206
Nested write:
186207
Nested Read-Write:
@@ -225,50 +246,59 @@ null coalesce:
225246
226247
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 48
227248
int(25)
228-
unset():
249+
Reference to dimension:
229250
230251
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 55
252+
Value of reference:
253+
int(25)
254+
Value of container dimension after write to reference (should be int(100) if successful):
255+
256+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 60
257+
int(100)
258+
unset():
259+
260+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 67
231261
Nested read:
232262
233-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 62
263+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 74
234264
235-
Warning: Undefined array key 3 in %s on line 62
265+
Warning: Undefined array key 3 in %s on line 74
236266
237-
Warning: Trying to access array offset on null in %s on line 62
267+
Warning: Trying to access array offset on null in %s on line 74
238268
NULL
239269
Nested write:
240270
241-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 69
271+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 81
242272
243-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 69
273+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 81
244274
Nested Read-Write:
245275
246-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 76
276+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 88
247277
248-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 76
278+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 88
249279
Nested isset():
250280
251-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 83
281+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
252282
253-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 83
283+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
254284
bool(true)
255285
Nested empty():
256286
257-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 89
287+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 101
258288
259-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 89
289+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 101
260290
bool(false)
261291
Nested null coalesce:
262292
263-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
293+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 107
264294
265-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 95
295+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 107
266296
int(30)
267297
Nested unset():
268298
269-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 102
299+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 114
270300
271-
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 102
301+
Warning: Resource ID#3 used as offset, casting to integer (3) in %s on line 114
272302
273303
OUTPUT;
274304

0 commit comments

Comments
 (0)