Skip to content

Commit cedc415

Browse files
committed
Add test checking offset handling
1 parent 7bd621c commit cedc415

File tree

1 file changed

+222
-0
lines changed

1 file changed

+222
-0
lines changed

ext/spl/tests/fixedarray_003.phpt

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
--TEST--
2+
SPL: FixedArray: Non integer offset handling
3+
--FILE--
4+
<?php
5+
$o = new SplFixedArray(10);
6+
$r = fopen('php://memory', 'r+');
7+
8+
9+
echo 'Write context', \PHP_EOL;
10+
$o[false] = 'a';
11+
$o[true] = 'b';
12+
$o[2.5] = 'c';
13+
14+
try {
15+
$o[[]] = 'd';
16+
} catch (\TypeError $e) {
17+
echo $e->getMessage(), "\n";
18+
}
19+
try {
20+
$o[new stdClass()] = 'e';
21+
} catch (\TypeError $e) {
22+
echo $e->getMessage(), "\n";
23+
}
24+
try {
25+
$o[$r] = 'f';
26+
} catch (\TypeError $e) {
27+
echo $e->getMessage(), "\n";
28+
}
29+
30+
$o['3'] = 'g';
31+
32+
try {
33+
$o['3.5'] = 'h';
34+
} catch (\TypeError $e) {
35+
echo $e->getMessage(), "\n";
36+
}
37+
try {
38+
$o['03'] = 'i';
39+
} catch (\TypeError $e) {
40+
echo $e->getMessage(), "\n";
41+
}
42+
try {
43+
$o[' 3'] = 'j';
44+
} catch (\TypeError $e) {
45+
echo $e->getMessage(), "\n";
46+
}
47+
48+
49+
echo 'Read context', \PHP_EOL;
50+
var_dump($o[false]);
51+
var_dump($o[true]);
52+
var_dump($o[2.5]);
53+
54+
try {
55+
var_dump($o[[]]);
56+
} catch (\TypeError $e) {
57+
echo $e->getMessage(), "\n";
58+
}
59+
try {
60+
var_dump($o[new stdClass()]);
61+
} catch (\TypeError $e) {
62+
echo $e->getMessage(), "\n";
63+
}
64+
try {
65+
var_dump($o[$r]);
66+
} catch (\TypeError $e) {
67+
echo $e->getMessage(), "\n";
68+
}
69+
70+
var_dump($o['3']);
71+
72+
try {
73+
var_dump($o['3.5']);
74+
} catch (\TypeError $e) {
75+
echo $e->getMessage(), "\n";
76+
}
77+
try {
78+
var_dump($o['03']);
79+
} catch (\TypeError $e) {
80+
echo $e->getMessage(), "\n";
81+
}
82+
try {
83+
var_dump($o[' 3']);
84+
} catch (\TypeError $e) {
85+
echo $e->getMessage(), "\n";
86+
}
87+
88+
89+
echo 'isset()', \PHP_EOL;
90+
var_dump(isset($o[false]));
91+
var_dump(isset($o[true]));
92+
var_dump(isset($o[2.5]));
93+
94+
try {
95+
var_dump(isset($o[[]]));
96+
} catch (\TypeError $e) {
97+
echo $e->getMessage(), "\n";
98+
}
99+
try {
100+
var_dump(isset($o[new stdClass()]));
101+
} catch (\TypeError $e) {
102+
echo $e->getMessage(), "\n";
103+
}
104+
try {
105+
var_dump(isset($o[$r]));
106+
} catch (\TypeError $e) {
107+
echo $e->getMessage(), "\n";
108+
}
109+
110+
var_dump(isset($o['3']));
111+
112+
try {
113+
var_dump(isset($o['3.5']));
114+
} catch (\TypeError $e) {
115+
echo $e->getMessage(), "\n";
116+
}
117+
try {
118+
var_dump(isset($o['03']));
119+
} catch (\TypeError $e) {
120+
echo $e->getMessage(), "\n";
121+
}
122+
try {
123+
var_dump(isset($o[' 3']));
124+
} catch (\TypeError $e) {
125+
echo $e->getMessage(), "\n";
126+
}
127+
128+
echo 'empty()', \PHP_EOL;
129+
var_dump(empty($o[false]));
130+
var_dump(empty($o[true]));
131+
var_dump(empty($o[2.5]));
132+
133+
try {
134+
var_dump(empty($o[[]]));
135+
} catch (\TypeError $e) {
136+
echo $e->getMessage(), "\n";
137+
}
138+
try {
139+
var_dump(empty($o[new stdClass()]));
140+
} catch (\TypeError $e) {
141+
echo $e->getMessage(), "\n";
142+
}
143+
try {
144+
var_dump(empty($o[$r]));
145+
} catch (\TypeError $e) {
146+
echo $e->getMessage(), "\n";
147+
}
148+
149+
var_dump(empty($o['3']));
150+
151+
try {
152+
var_dump(empty($o['3.5']));
153+
} catch (\TypeError $e) {
154+
echo $e->getMessage(), "\n";
155+
}
156+
try {
157+
var_dump(empty($o['03']));
158+
} catch (\TypeError $e) {
159+
echo $e->getMessage(), "\n";
160+
}
161+
try {
162+
var_dump(empty($o[' 3']));
163+
} catch (\TypeError $e) {
164+
echo $e->getMessage(), "\n";
165+
}
166+
?>
167+
--EXPECTF--
168+
Write context
169+
170+
Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
171+
Illegal offset type
172+
Illegal offset type
173+
174+
Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
175+
Illegal offset type
176+
Illegal offset type
177+
Illegal offset type
178+
Read context
179+
string(1) "a"
180+
string(1) "b"
181+
182+
Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
183+
string(1) "c"
184+
Illegal offset type
185+
Illegal offset type
186+
187+
Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
188+
string(1) "f"
189+
string(1) "g"
190+
Illegal offset type
191+
Illegal offset type
192+
Illegal offset type
193+
isset()
194+
bool(true)
195+
bool(true)
196+
197+
Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
198+
bool(true)
199+
Illegal offset type
200+
Illegal offset type
201+
202+
Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
203+
bool(true)
204+
bool(true)
205+
Illegal offset type
206+
Illegal offset type
207+
Illegal offset type
208+
empty()
209+
bool(false)
210+
bool(false)
211+
212+
Deprecated: Implicit conversion from float 2.5 to int loses precision in %s on line %d
213+
bool(false)
214+
Illegal offset type
215+
Illegal offset type
216+
217+
Warning: Resource ID#%d used as offset, casting to integer (%d) in %s on line %d
218+
bool(false)
219+
bool(false)
220+
Illegal offset type
221+
Illegal offset type
222+
Illegal offset type

0 commit comments

Comments
 (0)