1--TEST--
2Test << operator : various numbers as strings
3--SKIPIF--
4<?php
5if (PHP_INT_SIZE != 4) die("skip this test is for 32bit platform only");
6if ((65<<65)==0) die("skip this test is for Intel only");
7?>
8--FILE--
9<?php
10
11$strVals = array(
12   "0","65","-44", "1.2", "-7.7", "abc", "123abc", "123e5", "123e5xyz", " 123abc", "123 abc", "123abc ", "3.4a",
13   "a5.9"
14);
15
16error_reporting(E_ERROR);
17
18foreach ($strVals as $strVal) {
19   foreach($strVals as $otherVal) {
20	   echo "--- testing: '$strVal' << '$otherVal' ---\n";
21      var_dump(bin2hex($strVal<<$otherVal));
22   }
23}
24
25?>
26===DONE===
27--EXPECT--
28--- testing: '0' << '0' ---
29string(2) "30"
30--- testing: '0' << '65' ---
31string(2) "30"
32--- testing: '0' << '-44' ---
33string(2) "30"
34--- testing: '0' << '1.2' ---
35string(2) "30"
36--- testing: '0' << '-7.7' ---
37string(2) "30"
38--- testing: '0' << 'abc' ---
39string(2) "30"
40--- testing: '0' << '123abc' ---
41string(2) "30"
42--- testing: '0' << '123e5' ---
43string(2) "30"
44--- testing: '0' << '123e5xyz' ---
45string(2) "30"
46--- testing: '0' << ' 123abc' ---
47string(2) "30"
48--- testing: '0' << '123 abc' ---
49string(2) "30"
50--- testing: '0' << '123abc ' ---
51string(2) "30"
52--- testing: '0' << '3.4a' ---
53string(2) "30"
54--- testing: '0' << 'a5.9' ---
55string(2) "30"
56--- testing: '65' << '0' ---
57string(4) "3635"
58--- testing: '65' << '65' ---
59string(6) "313330"
60--- testing: '65' << '-44' ---
61string(16) "3638313537343430"
62--- testing: '65' << '1.2' ---
63string(6) "313330"
64--- testing: '65' << '-7.7' ---
65string(22) "2d32313133393239323136"
66--- testing: '65' << 'abc' ---
67string(4) "3635"
68--- testing: '65' << '123abc' ---
69string(18) "313334323137373238"
70--- testing: '65' << '123e5' ---
71string(18) "313334323137373238"
72--- testing: '65' << '123e5xyz' ---
73string(18) "313334323137373238"
74--- testing: '65' << ' 123abc' ---
75string(18) "313334323137373238"
76--- testing: '65' << '123 abc' ---
77string(18) "313334323137373238"
78--- testing: '65' << '123abc ' ---
79string(18) "313334323137373238"
80--- testing: '65' << '3.4a' ---
81string(6) "353230"
82--- testing: '65' << 'a5.9' ---
83string(4) "3635"
84--- testing: '-44' << '0' ---
85string(6) "2d3434"
86--- testing: '-44' << '65' ---
87string(6) "2d3838"
88--- testing: '-44' << '-44' ---
89string(18) "2d3436313337333434"
90--- testing: '-44' << '1.2' ---
91string(6) "2d3838"
92--- testing: '-44' << '-7.7' ---
93string(22) "2d31343736333935303038"
94--- testing: '-44' << 'abc' ---
95string(6) "2d3434"
96--- testing: '-44' << '123abc' ---
97string(22) "2d31363130363132373336"
98--- testing: '-44' << '123e5' ---
99string(22) "2d31363130363132373336"
100--- testing: '-44' << '123e5xyz' ---
101string(22) "2d31363130363132373336"
102--- testing: '-44' << ' 123abc' ---
103string(22) "2d31363130363132373336"
104--- testing: '-44' << '123 abc' ---
105string(22) "2d31363130363132373336"
106--- testing: '-44' << '123abc ' ---
107string(22) "2d31363130363132373336"
108--- testing: '-44' << '3.4a' ---
109string(8) "2d333532"
110--- testing: '-44' << 'a5.9' ---
111string(6) "2d3434"
112--- testing: '1.2' << '0' ---
113string(2) "31"
114--- testing: '1.2' << '65' ---
115string(2) "32"
116--- testing: '1.2' << '-44' ---
117string(14) "31303438353736"
118--- testing: '1.2' << '1.2' ---
119string(2) "32"
120--- testing: '1.2' << '-7.7' ---
121string(16) "3333353534343332"
122--- testing: '1.2' << 'abc' ---
123string(2) "31"
124--- testing: '1.2' << '123abc' ---
125string(18) "313334323137373238"
126--- testing: '1.2' << '123e5' ---
127string(18) "313334323137373238"
128--- testing: '1.2' << '123e5xyz' ---
129string(18) "313334323137373238"
130--- testing: '1.2' << ' 123abc' ---
131string(18) "313334323137373238"
132--- testing: '1.2' << '123 abc' ---
133string(18) "313334323137373238"
134--- testing: '1.2' << '123abc ' ---
135string(18) "313334323137373238"
136--- testing: '1.2' << '3.4a' ---
137string(2) "38"
138--- testing: '1.2' << 'a5.9' ---
139string(2) "31"
140--- testing: '-7.7' << '0' ---
141string(4) "2d37"
142--- testing: '-7.7' << '65' ---
143string(6) "2d3134"
144--- testing: '-7.7' << '-44' ---
145string(16) "2d37333430303332"
146--- testing: '-7.7' << '1.2' ---
147string(6) "2d3134"
148--- testing: '-7.7' << '-7.7' ---
149string(20) "2d323334383831303234"
150--- testing: '-7.7' << 'abc' ---
151string(4) "2d37"
152--- testing: '-7.7' << '123abc' ---
153string(20) "2d393339353234303936"
154--- testing: '-7.7' << '123e5' ---
155string(20) "2d393339353234303936"
156--- testing: '-7.7' << '123e5xyz' ---
157string(20) "2d393339353234303936"
158--- testing: '-7.7' << ' 123abc' ---
159string(20) "2d393339353234303936"
160--- testing: '-7.7' << '123 abc' ---
161string(20) "2d393339353234303936"
162--- testing: '-7.7' << '123abc ' ---
163string(20) "2d393339353234303936"
164--- testing: '-7.7' << '3.4a' ---
165string(6) "2d3536"
166--- testing: '-7.7' << 'a5.9' ---
167string(4) "2d37"
168--- testing: 'abc' << '0' ---
169string(2) "30"
170--- testing: 'abc' << '65' ---
171string(2) "30"
172--- testing: 'abc' << '-44' ---
173string(2) "30"
174--- testing: 'abc' << '1.2' ---
175string(2) "30"
176--- testing: 'abc' << '-7.7' ---
177string(2) "30"
178--- testing: 'abc' << 'abc' ---
179string(2) "30"
180--- testing: 'abc' << '123abc' ---
181string(2) "30"
182--- testing: 'abc' << '123e5' ---
183string(2) "30"
184--- testing: 'abc' << '123e5xyz' ---
185string(2) "30"
186--- testing: 'abc' << ' 123abc' ---
187string(2) "30"
188--- testing: 'abc' << '123 abc' ---
189string(2) "30"
190--- testing: 'abc' << '123abc ' ---
191string(2) "30"
192--- testing: 'abc' << '3.4a' ---
193string(2) "30"
194--- testing: 'abc' << 'a5.9' ---
195string(2) "30"
196--- testing: '123abc' << '0' ---
197string(6) "313233"
198--- testing: '123abc' << '65' ---
199string(6) "323436"
200--- testing: '123abc' << '-44' ---
201string(18) "313238393734383438"
202--- testing: '123abc' << '1.2' ---
203string(6) "323436"
204--- testing: '123abc' << '-7.7' ---
205string(20) "2d313637373732313630"
206--- testing: '123abc' << 'abc' ---
207string(6) "313233"
208--- testing: '123abc' << '123abc' ---
209string(20) "2d363731303838363430"
210--- testing: '123abc' << '123e5' ---
211string(20) "2d363731303838363430"
212--- testing: '123abc' << '123e5xyz' ---
213string(20) "2d363731303838363430"
214--- testing: '123abc' << ' 123abc' ---
215string(20) "2d363731303838363430"
216--- testing: '123abc' << '123 abc' ---
217string(20) "2d363731303838363430"
218--- testing: '123abc' << '123abc ' ---
219string(20) "2d363731303838363430"
220--- testing: '123abc' << '3.4a' ---
221string(6) "393834"
222--- testing: '123abc' << 'a5.9' ---
223string(6) "313233"
224--- testing: '123e5' << '0' ---
225string(6) "313233"
226--- testing: '123e5' << '65' ---
227string(6) "323436"
228--- testing: '123e5' << '-44' ---
229string(18) "313238393734383438"
230--- testing: '123e5' << '1.2' ---
231string(6) "323436"
232--- testing: '123e5' << '-7.7' ---
233string(20) "2d313637373732313630"
234--- testing: '123e5' << 'abc' ---
235string(6) "313233"
236--- testing: '123e5' << '123abc' ---
237string(20) "2d363731303838363430"
238--- testing: '123e5' << '123e5' ---
239string(20) "2d363731303838363430"
240--- testing: '123e5' << '123e5xyz' ---
241string(20) "2d363731303838363430"
242--- testing: '123e5' << ' 123abc' ---
243string(20) "2d363731303838363430"
244--- testing: '123e5' << '123 abc' ---
245string(20) "2d363731303838363430"
246--- testing: '123e5' << '123abc ' ---
247string(20) "2d363731303838363430"
248--- testing: '123e5' << '3.4a' ---
249string(6) "393834"
250--- testing: '123e5' << 'a5.9' ---
251string(6) "313233"
252--- testing: '123e5xyz' << '0' ---
253string(6) "313233"
254--- testing: '123e5xyz' << '65' ---
255string(6) "323436"
256--- testing: '123e5xyz' << '-44' ---
257string(18) "313238393734383438"
258--- testing: '123e5xyz' << '1.2' ---
259string(6) "323436"
260--- testing: '123e5xyz' << '-7.7' ---
261string(20) "2d313637373732313630"
262--- testing: '123e5xyz' << 'abc' ---
263string(6) "313233"
264--- testing: '123e5xyz' << '123abc' ---
265string(20) "2d363731303838363430"
266--- testing: '123e5xyz' << '123e5' ---
267string(20) "2d363731303838363430"
268--- testing: '123e5xyz' << '123e5xyz' ---
269string(20) "2d363731303838363430"
270--- testing: '123e5xyz' << ' 123abc' ---
271string(20) "2d363731303838363430"
272--- testing: '123e5xyz' << '123 abc' ---
273string(20) "2d363731303838363430"
274--- testing: '123e5xyz' << '123abc ' ---
275string(20) "2d363731303838363430"
276--- testing: '123e5xyz' << '3.4a' ---
277string(6) "393834"
278--- testing: '123e5xyz' << 'a5.9' ---
279string(6) "313233"
280--- testing: ' 123abc' << '0' ---
281string(6) "313233"
282--- testing: ' 123abc' << '65' ---
283string(6) "323436"
284--- testing: ' 123abc' << '-44' ---
285string(18) "313238393734383438"
286--- testing: ' 123abc' << '1.2' ---
287string(6) "323436"
288--- testing: ' 123abc' << '-7.7' ---
289string(20) "2d313637373732313630"
290--- testing: ' 123abc' << 'abc' ---
291string(6) "313233"
292--- testing: ' 123abc' << '123abc' ---
293string(20) "2d363731303838363430"
294--- testing: ' 123abc' << '123e5' ---
295string(20) "2d363731303838363430"
296--- testing: ' 123abc' << '123e5xyz' ---
297string(20) "2d363731303838363430"
298--- testing: ' 123abc' << ' 123abc' ---
299string(20) "2d363731303838363430"
300--- testing: ' 123abc' << '123 abc' ---
301string(20) "2d363731303838363430"
302--- testing: ' 123abc' << '123abc ' ---
303string(20) "2d363731303838363430"
304--- testing: ' 123abc' << '3.4a' ---
305string(6) "393834"
306--- testing: ' 123abc' << 'a5.9' ---
307string(6) "313233"
308--- testing: '123 abc' << '0' ---
309string(6) "313233"
310--- testing: '123 abc' << '65' ---
311string(6) "323436"
312--- testing: '123 abc' << '-44' ---
313string(18) "313238393734383438"
314--- testing: '123 abc' << '1.2' ---
315string(6) "323436"
316--- testing: '123 abc' << '-7.7' ---
317string(20) "2d313637373732313630"
318--- testing: '123 abc' << 'abc' ---
319string(6) "313233"
320--- testing: '123 abc' << '123abc' ---
321string(20) "2d363731303838363430"
322--- testing: '123 abc' << '123e5' ---
323string(20) "2d363731303838363430"
324--- testing: '123 abc' << '123e5xyz' ---
325string(20) "2d363731303838363430"
326--- testing: '123 abc' << ' 123abc' ---
327string(20) "2d363731303838363430"
328--- testing: '123 abc' << '123 abc' ---
329string(20) "2d363731303838363430"
330--- testing: '123 abc' << '123abc ' ---
331string(20) "2d363731303838363430"
332--- testing: '123 abc' << '3.4a' ---
333string(6) "393834"
334--- testing: '123 abc' << 'a5.9' ---
335string(6) "313233"
336--- testing: '123abc ' << '0' ---
337string(6) "313233"
338--- testing: '123abc ' << '65' ---
339string(6) "323436"
340--- testing: '123abc ' << '-44' ---
341string(18) "313238393734383438"
342--- testing: '123abc ' << '1.2' ---
343string(6) "323436"
344--- testing: '123abc ' << '-7.7' ---
345string(20) "2d313637373732313630"
346--- testing: '123abc ' << 'abc' ---
347string(6) "313233"
348--- testing: '123abc ' << '123abc' ---
349string(20) "2d363731303838363430"
350--- testing: '123abc ' << '123e5' ---
351string(20) "2d363731303838363430"
352--- testing: '123abc ' << '123e5xyz' ---
353string(20) "2d363731303838363430"
354--- testing: '123abc ' << ' 123abc' ---
355string(20) "2d363731303838363430"
356--- testing: '123abc ' << '123 abc' ---
357string(20) "2d363731303838363430"
358--- testing: '123abc ' << '123abc ' ---
359string(20) "2d363731303838363430"
360--- testing: '123abc ' << '3.4a' ---
361string(6) "393834"
362--- testing: '123abc ' << 'a5.9' ---
363string(6) "313233"
364--- testing: '3.4a' << '0' ---
365string(2) "33"
366--- testing: '3.4a' << '65' ---
367string(2) "36"
368--- testing: '3.4a' << '-44' ---
369string(14) "33313435373238"
370--- testing: '3.4a' << '1.2' ---
371string(2) "36"
372--- testing: '3.4a' << '-7.7' ---
373string(18) "313030363633323936"
374--- testing: '3.4a' << 'abc' ---
375string(2) "33"
376--- testing: '3.4a' << '123abc' ---
377string(18) "343032363533313834"
378--- testing: '3.4a' << '123e5' ---
379string(18) "343032363533313834"
380--- testing: '3.4a' << '123e5xyz' ---
381string(18) "343032363533313834"
382--- testing: '3.4a' << ' 123abc' ---
383string(18) "343032363533313834"
384--- testing: '3.4a' << '123 abc' ---
385string(18) "343032363533313834"
386--- testing: '3.4a' << '123abc ' ---
387string(18) "343032363533313834"
388--- testing: '3.4a' << '3.4a' ---
389string(4) "3234"
390--- testing: '3.4a' << 'a5.9' ---
391string(2) "33"
392--- testing: 'a5.9' << '0' ---
393string(2) "30"
394--- testing: 'a5.9' << '65' ---
395string(2) "30"
396--- testing: 'a5.9' << '-44' ---
397string(2) "30"
398--- testing: 'a5.9' << '1.2' ---
399string(2) "30"
400--- testing: 'a5.9' << '-7.7' ---
401string(2) "30"
402--- testing: 'a5.9' << 'abc' ---
403string(2) "30"
404--- testing: 'a5.9' << '123abc' ---
405string(2) "30"
406--- testing: 'a5.9' << '123e5' ---
407string(2) "30"
408--- testing: 'a5.9' << '123e5xyz' ---
409string(2) "30"
410--- testing: 'a5.9' << ' 123abc' ---
411string(2) "30"
412--- testing: 'a5.9' << '123 abc' ---
413string(2) "30"
414--- testing: 'a5.9' << '123abc ' ---
415string(2) "30"
416--- testing: 'a5.9' << '3.4a' ---
417string(2) "30"
418--- testing: 'a5.9' << 'a5.9' ---
419string(2) "30"
420===DONE===
421
422