diff options
Diffstat (limited to 'ext/standard/tests')
73 files changed, 4709 insertions, 123 deletions
diff --git a/ext/standard/tests/array/007.phpt b/ext/standard/tests/array/007.phpt index 0e5c32af2..45cc9b6c2 100644 --- a/ext/standard/tests/array/007.phpt +++ b/ext/standard/tests/array/007.phpt @@ -61,6 +61,10 @@ class cr { if ($a->priv_member === $b->priv_member) return 0; return ($a->priv_member > $b->priv_member)? 1:-1; } + + function __toString() { + return "Object"; + } } function comp_func($a, $b) { @@ -309,21 +313,21 @@ $b=array ( var_dump(array_udiff_uassoc($a, $b, "comp_func_cr", "comp_func")); array(3) { ["0.1"]=> - object(cr)#1 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } ["0.5"]=> - object(cr)#2 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> - object(cr)#3 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> @@ -387,21 +391,21 @@ $b=array ( var_dump(array_udiff_uassoc($a, $b, array("cr", "comp_func_cr"), "comp_func")); array(3) { ["0.1"]=> - object(cr)#1 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } ["0.5"]=> - object(cr)#2 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> - object(cr)#3 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> @@ -463,42 +467,14 @@ $b=array ( )), ); var_dump(array_diff_assoc($a, $b)); -array(5) { +array(1) { ["0.1"]=> - object(cr)#1 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } - ["0.5"]=> - object(cr)#2 (2) { - ["priv_member:private"]=> - int(12) - ["public_member"]=> - int(12) - } - [0]=> - object(cr)#3 (2) { - ["priv_member:private"]=> - int(23) - ["public_member"]=> - int(23) - } - [1]=> - object(cr)#4 (2) { - ["priv_member:private"]=> - int(4) - ["public_member"]=> - int(4) - } - [2]=> - object(cr)#5 (2) { - ["priv_member:private"]=> - int(-15) - ["public_member"]=> - int(-15) - } } $a=array ( '0.1' => @@ -557,14 +533,14 @@ $b=array ( var_dump(array_udiff($a, $b, "comp_func_cr")); array(2) { ["0.5"]=> - object(cr)#2 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> - object(cr)#3 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> @@ -628,21 +604,21 @@ $b=array ( var_dump(array_udiff_assoc($a, $b, "comp_func_cr")); array(3) { ["0.1"]=> - object(cr)#1 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } ["0.5"]=> - object(cr)#2 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(12) ["public_member"]=> int(12) } [0]=> - object(cr)#3 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(23) ["public_member"]=> diff --git a/ext/standard/tests/array/array_fill.phpt b/ext/standard/tests/array/array_fill.phpt new file mode 100644 index 000000000..8220ef4ce --- /dev/null +++ b/ext/standard/tests/array/array_fill.phpt @@ -0,0 +1,366 @@ +--TEST--
+basic array_fill test
+--FILE--
+<?php
+$array1 = array(0.0, 1, 2.5);
+$array2 = array(TRUE, FALSE, NULL, "d", "e", "f");
+foreach($array1 as $start)
+{
+ foreach($array1 as $num)
+ {
+ foreach($array2 as $value)
+ {
+ echo '==========================='."\n";
+ echo 'start: '.$start.' num: '.$num.' value: '.$value."\n";
+ $output = array_fill($start, $num, $value);
+ var_dump($output);
+ }
+ }
+}
+echo '== Done ==';
+?>
+===============Done====================
+--EXPECTF--
+===========================
+start: 0 num: 0 value: 1
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 0 value: d
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 0 value: e
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 0 value: f
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 0 num: 1 value: 1
+array(1) {
+ [0]=>
+ bool(true)
+}
+===========================
+start: 0 num: 1 value:
+array(1) {
+ [0]=>
+ bool(false)
+}
+===========================
+start: 0 num: 1 value:
+array(1) {
+ [0]=>
+ NULL
+}
+===========================
+start: 0 num: 1 value: d
+array(1) {
+ [0]=>
+ string(1) "d"
+}
+===========================
+start: 0 num: 1 value: e
+array(1) {
+ [0]=>
+ string(1) "e"
+}
+===========================
+start: 0 num: 1 value: f
+array(1) {
+ [0]=>
+ string(1) "f"
+}
+===========================
+start: 0 num: 2.5 value: 1
+array(2) {
+ [0]=>
+ bool(true)
+ [1]=>
+ bool(true)
+}
+===========================
+start: 0 num: 2.5 value:
+array(2) {
+ [0]=>
+ bool(false)
+ [1]=>
+ bool(false)
+}
+===========================
+start: 0 num: 2.5 value:
+array(2) {
+ [0]=>
+ NULL
+ [1]=>
+ NULL
+}
+===========================
+start: 0 num: 2.5 value: d
+array(2) {
+ [0]=>
+ string(1) "d"
+ [1]=>
+ string(1) "d"
+}
+===========================
+start: 0 num: 2.5 value: e
+array(2) {
+ [0]=>
+ string(1) "e"
+ [1]=>
+ string(1) "e"
+}
+===========================
+start: 0 num: 2.5 value: f
+array(2) {
+ [0]=>
+ string(1) "f"
+ [1]=>
+ string(1) "f"
+}
+===========================
+start: 1 num: 0 value: 1
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 0 value: d
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 0 value: e
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 0 value: f
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 1 num: 1 value: 1
+array(1) {
+ [1]=>
+ bool(true)
+}
+===========================
+start: 1 num: 1 value:
+array(1) {
+ [1]=>
+ bool(false)
+}
+===========================
+start: 1 num: 1 value:
+array(1) {
+ [1]=>
+ NULL
+}
+===========================
+start: 1 num: 1 value: d
+array(1) {
+ [1]=>
+ string(1) "d"
+}
+===========================
+start: 1 num: 1 value: e
+array(1) {
+ [1]=>
+ string(1) "e"
+}
+===========================
+start: 1 num: 1 value: f
+array(1) {
+ [1]=>
+ string(1) "f"
+}
+===========================
+start: 1 num: 2.5 value: 1
+array(2) {
+ [1]=>
+ bool(true)
+ [2]=>
+ bool(true)
+}
+===========================
+start: 1 num: 2.5 value:
+array(2) {
+ [1]=>
+ bool(false)
+ [2]=>
+ bool(false)
+}
+===========================
+start: 1 num: 2.5 value:
+array(2) {
+ [1]=>
+ NULL
+ [2]=>
+ NULL
+}
+===========================
+start: 1 num: 2.5 value: d
+array(2) {
+ [1]=>
+ string(1) "d"
+ [2]=>
+ string(1) "d"
+}
+===========================
+start: 1 num: 2.5 value: e
+array(2) {
+ [1]=>
+ string(1) "e"
+ [2]=>
+ string(1) "e"
+}
+===========================
+start: 1 num: 2.5 value: f
+array(2) {
+ [1]=>
+ string(1) "f"
+ [2]=>
+ string(1) "f"
+}
+===========================
+start: 2.5 num: 0 value: 1
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 0 value:
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 0 value: d
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 0 value: e
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 0 value: f
+
+Warning: array_fill(): Number of elements must be positive in %s on line %d
+bool(false)
+===========================
+start: 2.5 num: 1 value: 1
+array(1) {
+ [2]=>
+ bool(true)
+}
+===========================
+start: 2.5 num: 1 value:
+array(1) {
+ [2]=>
+ bool(false)
+}
+===========================
+start: 2.5 num: 1 value:
+array(1) {
+ [2]=>
+ NULL
+}
+===========================
+start: 2.5 num: 1 value: d
+array(1) {
+ [2]=>
+ string(1) "d"
+}
+===========================
+start: 2.5 num: 1 value: e
+array(1) {
+ [2]=>
+ string(1) "e"
+}
+===========================
+start: 2.5 num: 1 value: f
+array(1) {
+ [2]=>
+ string(1) "f"
+}
+===========================
+start: 2.5 num: 2.5 value: 1
+array(2) {
+ [2]=>
+ bool(true)
+ [3]=>
+ bool(true)
+}
+===========================
+start: 2.5 num: 2.5 value:
+array(2) {
+ [2]=>
+ bool(false)
+ [3]=>
+ bool(false)
+}
+===========================
+start: 2.5 num: 2.5 value:
+array(2) {
+ [2]=>
+ NULL
+ [3]=>
+ NULL
+}
+===========================
+start: 2.5 num: 2.5 value: d
+array(2) {
+ [2]=>
+ string(1) "d"
+ [3]=>
+ string(1) "d"
+}
+===========================
+start: 2.5 num: 2.5 value: e
+array(2) {
+ [2]=>
+ string(1) "e"
+ [3]=>
+ string(1) "e"
+}
+===========================
+start: 2.5 num: 2.5 value: f
+array(2) {
+ [2]=>
+ string(1) "f"
+ [3]=>
+ string(1) "f"
+}
+== Done =================Done====================
diff --git a/ext/standard/tests/array/array_fill_keys.phpt b/ext/standard/tests/array/array_fill_keys.phpt new file mode 100755 index 000000000..65c38234c --- /dev/null +++ b/ext/standard/tests/array/array_fill_keys.phpt @@ -0,0 +1,42 @@ +--TEST-- +basic array_fill_keys test +--FILE-- +<?php + var_dump(array_fill_keys('test', 1)); + var_dump(array_fill_keys(array(), 1)); + var_dump(array_fill_keys(array('foo', 'bar'), NULL)); + var_dump(array_fill_keys(array('5', 'foo', 10, 1.23), 123)); + var_dump(array_fill_keys(array('test', TRUE, 10, 100), '')); +?> +--EXPECTF-- + +Warning: array_fill_keys() expects parameter 1 to be array, string given in %s on line %d +NULL +array(0) { +} +array(2) { + ["foo"]=> + NULL + ["bar"]=> + NULL +} +array(4) { + [5]=> + int(123) + ["foo"]=> + int(123) + [10]=> + int(123) + ["1.23"]=> + int(123) +} +array(4) { + ["test"]=> + string(0) "" + [1]=> + string(0) "" + [10]=> + string(0) "" + [100]=> + string(0) "" +} diff --git a/ext/standard/tests/array/array_filter.phpt b/ext/standard/tests/array/array_filter.phpt new file mode 100644 index 000000000..c470c26c9 --- /dev/null +++ b/ext/standard/tests/array/array_filter.phpt @@ -0,0 +1,93 @@ +--TEST--
+basic array_filter test
+--FILE--
+<?php
+function odd($var)
+{
+ return($var & 1);
+}
+
+function even($var)
+{
+ return(!($var & 1));
+}
+
+$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
+$array2 = array(6, 7, 8, 9, 10, 11, 12, 0);
+$array3 = array(TRUE, FALSE, NULL);
+
+echo "Odd :\n";
+var_dump(array_filter($array1, "odd"));
+var_dump(array_filter($array2, "odd"));
+var_dump(array_filter($array3, "odd"));
+echo "Even:\n";
+var_dump(array_filter($array1, "even"));
+var_dump(array_filter($array2, "even"));
+var_dump(array_filter($array3, "even"));
+
+var_dump(array_filter(array()));
+var_dump(array_filter(array(), array()));
+var_dump(array_filter("", null));
+var_dump(array_filter($array1, 1));
+
+echo '== DONE ==';
+?>
+--EXPECTF--
+Odd :
+array(3) {
+ ["a"]=>
+ int(1)
+ ["c"]=>
+ int(3)
+ ["e"]=>
+ int(5)
+}
+array(3) {
+ [1]=>
+ int(7)
+ [3]=>
+ int(9)
+ [5]=>
+ int(11)
+}
+array(1) {
+ [0]=>
+ bool(true)
+}
+Even:
+array(2) {
+ ["b"]=>
+ int(2)
+ ["d"]=>
+ int(4)
+}
+array(5) {
+ [0]=>
+ int(6)
+ [2]=>
+ int(8)
+ [4]=>
+ int(10)
+ [6]=>
+ int(12)
+ [7]=>
+ int(0)
+}
+array(2) {
+ [1]=>
+ bool(false)
+ [2]=>
+ NULL
+}
+array(0) {
+}
+
+Warning: array_filter(): The second argument, 'Array', should be a valid callback in %s on line %d
+NULL
+
+Warning: array_filter(): The first argument should be an array in %s on line %d
+NULL
+
+Warning: array_filter(): The second argument, '1', should be a valid callback in %s on line %d
+NULL
+== DONE ==
diff --git a/ext/standard/tests/array/array_flip.phpt b/ext/standard/tests/array/array_flip.phpt new file mode 100644 index 000000000..27b14fdd9 --- /dev/null +++ b/ext/standard/tests/array/array_flip.phpt @@ -0,0 +1,37 @@ +--TEST--
+basic array_flip test
+--FILE--
+<?php
+$trans = array("a" => 1,
+ "b" => 1,
+ "c" => 2,
+ "z" => 0,
+ "d" => TRUE,
+ "E" => FALSE,
+ "F" => NULL,
+ 0 => "G",
+ 1 => "h",
+ 2 => "i");
+$trans = array_flip($trans);
+var_dump($trans);
+?>
+--EXPECTF--
+Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d
+
+Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d
+
+Warning: array_flip(): Can only flip STRING and INTEGER values! in %s on line %d
+array(6) {
+ [1]=>
+ string(1) "b"
+ [2]=>
+ string(1) "c"
+ [0]=>
+ string(1) "z"
+ ["G"]=>
+ int(0)
+ ["h"]=>
+ int(1)
+ ["i"]=>
+ int(2)
+}
diff --git a/ext/standard/tests/array/array_intersect_1.phpt b/ext/standard/tests/array/array_intersect_1.phpt index 74c4828c2..39df5cd1b 100644 --- a/ext/standard/tests/array/array_intersect_1.phpt +++ b/ext/standard/tests/array/array_intersect_1.phpt @@ -2,7 +2,7 @@ Test of the *intersect* bunch of functions (both assoc and non-assoc) --FILE-- <?php -error_reporting(E_ALL); +error_reporting(E_ALL|E_STRICT); class cr { private $priv_member; public $public_member; @@ -14,6 +14,10 @@ class cr { if ($a->priv_member === $b->priv_member) return 0; return ($a->priv_member > $b->priv_member)? 1:-1; } + + function __toString() { + return "Object"; + } } function comp_func($a, $b) { @@ -35,7 +39,7 @@ echo "begin ------------ array_intersect() ----------------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect($a, $b);'."\n"; -var_dump(@array_intersect($a, $b)); +var_dump(array_intersect($a, $b)); echo "end ------------ array_intersect() ----------------------------\n"; /* array_uintersect() */ @@ -51,7 +55,7 @@ echo "begin ------------ array_intersect_assoc() ----------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect_assoc($a, $b));'."\n"; -var_dump(@array_intersect_assoc($a, $b)); +var_dump(array_intersect_assoc($a, $b)); echo "end ------------ array_intersect_assoc() ----------------------\n"; /* array_uintersect_assoc() */ @@ -67,7 +71,7 @@ echo "begin ------------ array_intersect_uassoc() ---------------------\n"; echo '$a='.var_export($a,TRUE).";\n"; echo '$b='.var_export($b,TRUE).";\n"; echo 'var_dump(array_intersect_uassoc($a, $b, "comp_func"));'."\n"; -var_dump(@array_intersect_uassoc($a, $b, "comp_func")); +var_dump(array_intersect_uassoc($a, $b, "comp_func")); echo "end ------------ array_intersect_uassoc() ---------------------\n"; /* array_uintersect_uassoc() - with ordinary function */ @@ -143,7 +147,42 @@ $b=array ( )), ); var_dump(array_intersect($a, $b); -array(0) { +array(5) { + ["0.1"]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(9) + ["public_member"]=> + int(9) + } + ["0.5"]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(12) + ["public_member"]=> + int(12) + } + [0]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(23) + ["public_member"]=> + int(23) + } + [1]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(4) + ["public_member"]=> + int(4) + } + [2]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(-15) + ["public_member"]=> + int(-15) + } } end ------------ array_intersect() ---------------------------- begin ------------ array_uintersect() --------------------------- @@ -204,21 +243,21 @@ $b=array ( var_dump(array_uintersect($a, $b, "comp_func_cr")); array(3) { ["0.1"]=> - object(cr)#1 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(9) ["public_member"]=> int(9) } [1]=> - object(cr)#4 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> - object(cr)#5 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> @@ -282,7 +321,35 @@ $b=array ( )), ); var_dump(array_intersect_assoc($a, $b)); -array(0) { +array(4) { + ["0.5"]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(12) + ["public_member"]=> + int(12) + } + [0]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(23) + ["public_member"]=> + int(23) + } + [1]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(4) + ["public_member"]=> + int(4) + } + [2]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(-15) + ["public_member"]=> + int(-15) + } } end ------------ array_intersect_assoc() ---------------------- begin ------------ array_uintersect_assoc() --------------------- @@ -343,14 +410,14 @@ $b=array ( var_dump(array_uintersect_assoc($a, $b, "comp_func_cr")); array(2) { [1]=> - object(cr)#4 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> - object(cr)#5 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> @@ -414,7 +481,35 @@ $b=array ( )), ); var_dump(array_intersect_uassoc($a, $b, "comp_func")); -array(0) { +array(4) { + ["0.5"]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(12) + ["public_member"]=> + int(12) + } + [0]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(23) + ["public_member"]=> + int(23) + } + [1]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(4) + ["public_member"]=> + int(4) + } + [2]=> + object(cr)#%d (2) { + ["priv_member:private"]=> + int(-15) + ["public_member"]=> + int(-15) + } } end ------------ array_intersect_uassoc() --------------------- begin ------------ array_uintersect_uassoc() with ordinary func - @@ -475,14 +570,14 @@ $b=array ( var_dump(array_uintersect_uassoc($a, $b, "comp_func_cr", "comp_func")); array(2) { [1]=> - object(cr)#4 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> - object(cr)#5 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> @@ -548,14 +643,14 @@ $b=array ( var_dump(array_uintersect_uassoc($a, $b, array("cr", "comp_func_cr"), "comp_func")); array(2) { [1]=> - object(cr)#4 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(4) ["public_member"]=> int(4) } [2]=> - object(cr)#5 (2) { + object(cr)#%d (2) { ["priv_member:private"]=> int(-15) ["public_member"]=> diff --git a/ext/standard/tests/array/array_search1.phpt b/ext/standard/tests/array/array_search1.phpt new file mode 100644 index 000000000..961c771eb --- /dev/null +++ b/ext/standard/tests/array/array_search1.phpt @@ -0,0 +1,35 @@ +--TEST-- +array_search() tests +--FILE-- +<?php + +$a = array(1=>0, 2=>1, 4=>3, "a"=>"b", "c"=>"d"); + +var_dump(array_search(1)); +var_dump(array_search(1,1)); +var_dump(array_search("a",$a)); +var_dump(array_search("0",$a, true)); +var_dump(array_search("0",$a)); +var_dump(array_search(0,$a)); +var_dump(array_search(1,$a)); +var_dump(array_search("d",$a, true)); +var_dump(array_search("d",$a)); +var_dump(array_search(-1,$a, true)); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: Wrong parameter count for array_search() in %s on line %d +NULL + +Warning: array_search(): Wrong datatype for second argument in %s on line %d +bool(false) +int(1) +bool(false) +int(1) +int(1) +int(2) +string(1) "c" +int(1) +bool(false) +Done diff --git a/ext/standard/tests/array/array_walk.phpt b/ext/standard/tests/array/array_walk.phpt new file mode 100644 index 000000000..a0e209831 --- /dev/null +++ b/ext/standard/tests/array/array_walk.phpt @@ -0,0 +1,48 @@ +--TEST-- +array_walk() tests +--FILE-- +<?php + +var_dump(array_walk()); +$var = 1; +var_dump(array_walk($var,1)); +$var = array(); +var_dump(array_walk($var,"")); + +function foo($v1, $v2, $v3) { + var_dump($v1); + var_dump($v2); + var_dump($v3); +} + +$var = array(1,2); +var_dump(array_walk($var, "foo", "data")); + +function foo2($v1, $v2, $v3) { + throw new Exception($v3); +} + +try { + var_dump(array_walk($var,"foo2", "data")); +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +echo "Done\n"; +?> +--EXPECTF-- +Warning: array_walk() expects at least 2 parameters, 0 given in %s on line %d +NULL + +Warning: array_walk(): The argument should be an array in %s on line %d +bool(false) +bool(true) +int(1) +int(0) +string(4) "data" +int(2) +int(1) +string(4) "data" +bool(true) +string(4) "data" +Done diff --git a/ext/standard/tests/array/array_walk_objects.phpt b/ext/standard/tests/array/array_walk_objects.phpt Binary files differnew file mode 100644 index 000000000..0e838ef25 --- /dev/null +++ b/ext/standard/tests/array/array_walk_objects.phpt diff --git a/ext/standard/tests/array/array_walk_rec_objects.phpt b/ext/standard/tests/array/array_walk_rec_objects.phpt Binary files differnew file mode 100644 index 000000000..e1c5dd610 --- /dev/null +++ b/ext/standard/tests/array/array_walk_rec_objects.phpt diff --git a/ext/standard/tests/array/array_walk_recursive1.phpt b/ext/standard/tests/array/array_walk_recursive1.phpt new file mode 100644 index 000000000..8505b70e9 --- /dev/null +++ b/ext/standard/tests/array/array_walk_recursive1.phpt @@ -0,0 +1,54 @@ +--TEST-- +array_walk_recursive() tests +--FILE-- +<?php + +var_dump(array_walk_recursive()); +$var = 1; +var_dump(array_walk_recursive($var,1)); +$var = array(); +var_dump(array_walk_recursive($var,"")); + +function foo($v1, $v2, $v3) { + var_dump($v1); + var_dump($v2); + var_dump($v3); +} + +$var = array(1,2, array(2,3)); +var_dump(array_walk_recursive($var, "foo", "data")); + +function foo2($v1, $v2, $v3) { + throw new Exception($v3); +} + +try { + var_dump(array_walk_recursive($var,"foo2", "data")); +} catch (Exception $e) { + var_dump($e->getMessage()); +} + +echo "Done\n"; +?> +--EXPECTF-- +Warning: array_walk_recursive() expects at least 2 parameters, 0 given in %s on line %d +NULL + +Warning: array_walk_recursive(): The argument should be an array in %s on line %d +bool(false) +bool(true) +int(1) +int(0) +string(4) "data" +int(2) +int(1) +string(4) "data" +int(2) +int(0) +string(4) "data" +int(3) +int(1) +string(4) "data" +bool(true) +string(4) "data" +Done diff --git a/ext/standard/tests/array/bug30833.phpt b/ext/standard/tests/array/bug30833.phpt index ecf5f1f52..728a659d8 100644 --- a/ext/standard/tests/array/bug30833.phpt +++ b/ext/standard/tests/array/bug30833.phpt @@ -1,5 +1,5 @@ --TEST-- -bug #30833 (array_count_values() modifying input array) +Bug #30833 (array_count_values() modifies input array) --FILE-- <?php diff --git a/ext/standard/tests/array/bug34066.phpt b/ext/standard/tests/array/bug34066.phpt new file mode 100644 index 000000000..31f6b4c1d --- /dev/null +++ b/ext/standard/tests/array/bug34066.phpt @@ -0,0 +1,804 @@ +--TEST-- +Bug #34066 (recursive array_walk causes segfault) +--FILE-- +<?php + + $order = array( + "DocID" => "1", + "DocDate" => "19.09.06", + "ReSubmissionDate" => "", + "DocTyp" => "Stapelauftrag", + "CustID" => "00000", + "CustomerAddress" => array( + array( + "Name1" => 'name1', + "Name2" => 'name2', + "Name3" => "", + "City" => 'city', + "Street" => 'street', + "Postal" => 'postcode', + "IATA" => "90", + "Country" => "Deutschland", + "ShortName" => 'short', + "ContactKey" => "", + "EMail" => 'email@example.com', + ) + ), + "Text1" => "", + "Text2" => "", + "Wildcard1" => "", + "Wildcard2" => "", + "Dispatch" => "Paketdienst", + "Weight" => "0,0", + "BillingCustID" => "4300200000", + "ExtDocNr" => "00000000003", + "AnalysisLock" => "", + "PrintFlag" => "", + "FormType" => "0", + "Curr" => "EUR", + "ExChangeRate" => "1,0000", + "WIRRate" => "0", + "OneTimeCustomer" => array( + array( + "BankCode" => "", + "BankAccount" => "" + ) + ), + "Language" => "0", + "PriceGroup" => "1", + "PrFlag" => "0", + "SalesTaxKey" => "1", + "ProceedKey" => "0", + "CustDiscountGroup" => "0", + "Discount" => array( + array( + "FinDisc1" => "0,00", + "Disc1Base" => "145,72", + "Disc1Value" => "0,00", + "FinDisc2" => "0,00", + "Disc2Base" => "145,72", + "Disc2Value" => "0,00", + "FinDisc3" => "0,00", + "Disc3Base" => "145,72", + "Disc3Value" => "0,00", + "ValueSummary" => "0,00" + ) + ), + "Contact" => array( + array( + "Repr" => "999", + "Region" => "99", + "Commission" => "0,00", + "Agent" => "000000" + ) + ), + "Booking" => array( + array( + "CostUnit" => "0000000000", + "CostCentre" => "0000000000", + "AccountingArea"=> "01" + ) + ), + "InvoiceCycleKey" => "0", + "AnalysisKey" => "", + "OrderNumber" => "", + "OrderDate" => "", + "OrderCode" => "", + "DocItems" => array( + "DocItem" => array( + "PosType" => "1", + "ItemRef" => "1002", + "CRef" => "", + "Desc1" => "Pr�sentation Niederlande per", + "Desc2" => "", + "ArticleGroup" => "102", + "PosTypeVersion" => "E", + "Delivery" => array( + array( + "DelWeek" => "", + "DelDay" => "", + "DelTime" => "" + ) + ), + "PricePu" => "145,72", + "PriceUnit" => "0", + "PriceCalculation" => "0", + "ItemVal" => "145,72", + "InputKey" => "0", + "AveragePurchasePrice" => "0", + "Tax" => array( + array( + "TaxCode" => "00", + "TaxBra" => "000", + "TaxBraAccess" => "0", + "TaxSumIndex" => "0" + ) + ), + "DiscountArticle" => array( + array( + "DiscPC" => "0,00", + "DiscKey" => "1" + ) + ), + "ProceedKeyArticle" => "01", + "ActionKey" => "00", + "ContactCommissionArticle"=> "0,00", + "QuantDependantPriceKey"=> "", + "Quant" => "1", + "QuantUnit" => "", + "Meas" => array( + array( + "Count" => "1", + "Length" => "0,000", + "Width" => "0,000", + "Height" => "0,000" + ) + ), + "DecimalPlace" => "0", + "MultiplierQuant" => "1,000000", + "DifferingQuantUnit" => "", + "DecimalPlaceConversion"=> "0", + "WeightArticle" => array( + array( + "Amount" => "0", + "Unit" => "0" + ) + ), + "Wreath" => "0,000", + "Stock" => "1", + "CostUnitArticle" => "", + "SerialNbKey" => "0", + "TextComplementKey" => "0", + "PartsListPrintKey" => "", + "Prod" => "0000000000" + ) + ), + "Payment" => array( + "PaymentKey" => "0", + "ReminderKey" => "00", + "PayTerms" => array( + array( + "PayTerm" => "1", + "PayDays" => "000", + "CashDiscDays1" => "000", + "CashDiscDays2" => "000", + "CashDiscPer1" => "0,00", + "CashDiscPer2" => "0,00" + ), + array( + "PayTerm" => "2", + "PayDays" => "000", + "CashDiscDays1" => "000", + "CashDiscDays2" => "000", + "CashDiscPer1" => "0,00", + "CashDiscPer2" => "0,00" + ) + ) + ), + "NetAmountByTurnOverTax" => array( + array( + "TurnOverTaxFree" => "145,72", + "TurnOverTax1" => "0,00", + "TurnOverTax2" => "0,00", + "TurnOverTax3" => "0,00", + "TurnOverTax4" => "0,00", + "TurnOverTax5" => "0,00", + "TurnOverTax6" => "0,00", + "TurnOverTax7" => "0,00", + "TurnOverTax8" => "0,00" + ), + ), + "GrossAmount" => "145,72", + "ProceedAmount" => "145,72", + "NetAmountByPayTerm2" => array( + array( + "Sum0" => "0,00", + "Sum1" => "0,00", + "Sum2" => "0,00", + "Sum3" => "0,00", + "Sum4" => "0,00", + "Sum5" => "0,00", + "Sum6" => "0,00", + "Sum7" => "0,00", + "Sum8" => "0,00" + ), + ), + "TaxCodes" => array( + array( + "TaxCode1" => "0", + "TaxCode2" => "0", + "TaxCode3" => "0", + "TaxCode4" => "0", + "TaxCode5" => "0", + "TaxCode6" => "0", + "TaxCode7" => "0", + "TaxCode8" => "0" + ) + ) + ); + $docs = array( + array( + "Version" => "1.0", + "ProducerName" => "xxxxxxxx", + "ProductName" => "Classic Line", + "xmlns" => "x-schema:CL310_DezABFSchema.XML" + ), + "Company" => array( + array( + "MandateNumber" => "111", + "MandateName" => "xxx xxxxxxx-xxxxx xxxxxxx", + "MandateCurr" => "EUR" + ), + ), + "Doc" => $order + ); + + dump2xml($docs); + + +function dump2xml($array) { + // output of this goes through 2xml + array_walk($array, "gen_xml", "/Docs/"); +} +function gen_xml($val, $key, $prefix) +{ + global $xml_fd; + print "gen_xml(prefix=$prefix)\n"; + if (is_array($val)) { + if (preg_match('/^\d+$/', $key)) { + if ($key == 1) { + print substr($prefix, 0, -1) . "\n"; + } + array_walk($val, "gen_xml", "$prefix@"); + } + else { + array_walk($val, "gen_xml", "$prefix$key/"); + } + } + else { + if (strlen($val) > 0) + print "$prefix$key=$val\n"; + else + print "$prefix$key\n"; + } + print "gen_xml(prefix=$prefix) end\n"; +} +echo "Done\n"; +?> +--EXPECTF-- +gen_xml(prefix=/Docs/) +gen_xml(prefix=/Docs/@) +/Docs/@Version=1.0 +gen_xml(prefix=/Docs/@) end +gen_xml(prefix=/Docs/@) +/Docs/@ProducerName=xxxxxxxx +gen_xml(prefix=/Docs/@) end +gen_xml(prefix=/Docs/@) +/Docs/@ProductName=Classic Line +gen_xml(prefix=/Docs/@) end +gen_xml(prefix=/Docs/@) +/Docs/@xmlns=x-schema:CL310_DezABFSchema.XML +gen_xml(prefix=/Docs/@) end +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +gen_xml(prefix=/Docs/Company/) +gen_xml(prefix=/Docs/Company/@) +/Docs/Company/@MandateNumber=111 +gen_xml(prefix=/Docs/Company/@) end +gen_xml(prefix=/Docs/Company/@) +/Docs/Company/@MandateName=xxx xxxxxxx-xxxxx xxxxxxx +gen_xml(prefix=/Docs/Company/@) end +gen_xml(prefix=/Docs/Company/@) +/Docs/Company/@MandateCurr=EUR +gen_xml(prefix=/Docs/Company/@) end +gen_xml(prefix=/Docs/Company/) end +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/DocID=1 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/DocDate=19.09.06 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/ReSubmissionDate +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/DocTyp=Stapelauftrag +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/CustID=00000 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/CustomerAddress/) +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Name1=name1 +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Name2=name2 +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Name3 +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@City=city +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Street=street +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Postal=postcode +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@IATA=90 +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@Country=Deutschland +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@ShortName=short +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@ContactKey +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) +/Docs/Doc/CustomerAddress/@EMail=email@example.com +gen_xml(prefix=/Docs/Doc/CustomerAddress/@) end +gen_xml(prefix=/Docs/Doc/CustomerAddress/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Text1 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Text2 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Wildcard1 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Wildcard2 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Dispatch=Paketdienst +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Weight=0,0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/BillingCustID=4300200000 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/ExtDocNr=00000000003 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/AnalysisLock +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/PrintFlag +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/FormType=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Curr=EUR +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/ExChangeRate=1,0000 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/WIRRate=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/) +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/@) +/Docs/Doc/OneTimeCustomer/@BankCode +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/@) end +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/@) +/Docs/Doc/OneTimeCustomer/@BankAccount +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/@) end +gen_xml(prefix=/Docs/Doc/OneTimeCustomer/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/Language=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/PriceGroup=1 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/PrFlag=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/SalesTaxKey=1 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/ProceedKey=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/CustDiscountGroup=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/Discount/) +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@FinDisc1=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc1Base=145,72 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc1Value=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@FinDisc2=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc2Base=145,72 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc2Value=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@FinDisc3=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc3Base=145,72 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@Disc3Value=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/@) +/Docs/Doc/Discount/@ValueSummary=0,00 +gen_xml(prefix=/Docs/Doc/Discount/@) end +gen_xml(prefix=/Docs/Doc/Discount/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/Contact/) +gen_xml(prefix=/Docs/Doc/Contact/@) +/Docs/Doc/Contact/@Repr=999 +gen_xml(prefix=/Docs/Doc/Contact/@) end +gen_xml(prefix=/Docs/Doc/Contact/@) +/Docs/Doc/Contact/@Region=99 +gen_xml(prefix=/Docs/Doc/Contact/@) end +gen_xml(prefix=/Docs/Doc/Contact/@) +/Docs/Doc/Contact/@Commission=0,00 +gen_xml(prefix=/Docs/Doc/Contact/@) end +gen_xml(prefix=/Docs/Doc/Contact/@) +/Docs/Doc/Contact/@Agent=000000 +gen_xml(prefix=/Docs/Doc/Contact/@) end +gen_xml(prefix=/Docs/Doc/Contact/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/Booking/) +gen_xml(prefix=/Docs/Doc/Booking/@) +/Docs/Doc/Booking/@CostUnit=0000000000 +gen_xml(prefix=/Docs/Doc/Booking/@) end +gen_xml(prefix=/Docs/Doc/Booking/@) +/Docs/Doc/Booking/@CostCentre=0000000000 +gen_xml(prefix=/Docs/Doc/Booking/@) end +gen_xml(prefix=/Docs/Doc/Booking/@) +/Docs/Doc/Booking/@AccountingArea=01 +gen_xml(prefix=/Docs/Doc/Booking/@) end +gen_xml(prefix=/Docs/Doc/Booking/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/InvoiceCycleKey=0 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/AnalysisKey +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/OrderNumber +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/OrderDate +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/OrderCode +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/DocItems/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PosType=1 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ItemRef=1002 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/CRef +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Desc1=Pr�sentation Niederlande per +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Desc2 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ArticleGroup=102 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PosTypeVersion=E +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) +/Docs/Doc/DocItems/DocItem/Delivery/@DelWeek +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) +/Docs/Doc/DocItems/DocItem/Delivery/@DelDay +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) +/Docs/Doc/DocItems/DocItem/Delivery/@DelTime +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Delivery/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PricePu=145,72 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PriceUnit=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PriceCalculation=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ItemVal=145,72 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/InputKey=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/AveragePurchasePrice=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) +/Docs/Doc/DocItems/DocItem/Tax/@TaxCode=00 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) +/Docs/Doc/DocItems/DocItem/Tax/@TaxBra=000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) +/Docs/Doc/DocItems/DocItem/Tax/@TaxBraAccess=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) +/Docs/Doc/DocItems/DocItem/Tax/@TaxSumIndex=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Tax/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/@) +/Docs/Doc/DocItems/DocItem/DiscountArticle/@DiscPC=0,00 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/@) +/Docs/Doc/DocItems/DocItem/DiscountArticle/@DiscKey=1 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/DiscountArticle/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ProceedKeyArticle=01 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ActionKey=00 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/ContactCommissionArticle=0,00 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/QuantDependantPriceKey +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Quant=1 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/QuantUnit +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) +/Docs/Doc/DocItems/DocItem/Meas/@Count=1 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) +/Docs/Doc/DocItems/DocItem/Meas/@Length=0,000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) +/Docs/Doc/DocItems/DocItem/Meas/@Width=0,000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) +/Docs/Doc/DocItems/DocItem/Meas/@Height=0,000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/Meas/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/DecimalPlace=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/MultiplierQuant=1,000000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/DifferingQuantUnit +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/DecimalPlaceConversion=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/) +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/@) +/Docs/Doc/DocItems/DocItem/WeightArticle/@Amount=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/@) +/Docs/Doc/DocItems/DocItem/WeightArticle/@Unit=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/@) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/WeightArticle/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Wreath=0,000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Stock=1 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/CostUnitArticle +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/SerialNbKey=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/TextComplementKey=0 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/PartsListPrintKey +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) +/Docs/Doc/DocItems/DocItem/Prod=0000000000 +gen_xml(prefix=/Docs/Doc/DocItems/DocItem/) end +gen_xml(prefix=/Docs/Doc/DocItems/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/Payment/) +/Docs/Doc/Payment/PaymentKey=0 +gen_xml(prefix=/Docs/Doc/Payment/) end +gen_xml(prefix=/Docs/Doc/Payment/) +/Docs/Doc/Payment/ReminderKey=00 +gen_xml(prefix=/Docs/Doc/Payment/) end +gen_xml(prefix=/Docs/Doc/Payment/) +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/) +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@PayTerm=1 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@PayDays=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscDays1=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscDays2=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscPer1=0,00 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscPer2=0,00 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/) +/Docs/Doc/Payment/PayTerms +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@PayTerm=2 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@PayDays=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscDays1=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscDays2=000 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscPer1=0,00 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) +/Docs/Doc/Payment/PayTerms/@CashDiscPer2=0,00 +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/@) end +gen_xml(prefix=/Docs/Doc/Payment/PayTerms/) end +gen_xml(prefix=/Docs/Doc/Payment/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/) +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTaxFree=145,72 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax1=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax2=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax3=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax4=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax5=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax6=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax7=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) +/Docs/Doc/NetAmountByTurnOverTax/@TurnOverTax8=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByTurnOverTax/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/GrossAmount=145,72 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +/Docs/Doc/ProceedAmount=145,72 +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/) +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum0=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum1=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum2=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum3=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum4=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum5=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum6=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum7=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) +/Docs/Doc/NetAmountByPayTerm2/@Sum8=0,00 +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/@) end +gen_xml(prefix=/Docs/Doc/NetAmountByPayTerm2/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/Doc/) +gen_xml(prefix=/Docs/Doc/TaxCodes/) +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode1=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode2=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode3=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode4=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode5=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode6=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode7=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/@) +/Docs/Doc/TaxCodes/@TaxCode8=0 +gen_xml(prefix=/Docs/Doc/TaxCodes/@) end +gen_xml(prefix=/Docs/Doc/TaxCodes/) end +gen_xml(prefix=/Docs/Doc/) end +gen_xml(prefix=/Docs/) end +Done diff --git a/ext/standard/tests/array/bug34066_1.phpt b/ext/standard/tests/array/bug34066_1.phpt new file mode 100644 index 000000000..edc16efd0 --- /dev/null +++ b/ext/standard/tests/array/bug34066_1.phpt @@ -0,0 +1,731 @@ +--TEST-- +Bug #34066 (recursive array_walk causes segfault) +--FILE-- +<?php + + $order = array( + "DocID" => "1", + "DocDate" => "19.09.06", + "ReSubmissionDate" => "", + "DocTyp" => "Stapelauftrag", + "CustID" => "00000", + "CustomerAddress" => array( + array( + "Name1" => 'name1', + "Name2" => 'name2', + "Name3" => "", + "City" => 'city', + "Street" => 'street', + "Postal" => 'postcode', + "IATA" => "90", + "Country" => "Deutschland", + "ShortName" => 'short', + "ContactKey" => "", + "EMail" => 'email@example.com', + ) + ), + "Text1" => "", + "Text2" => "", + "Wildcard1" => "", + "Wildcard2" => "", + "Dispatch" => "Paketdienst", + "Weight" => "0,0", + "BillingCustID" => "4300200000", + "ExtDocNr" => "00000000003", + "AnalysisLock" => "", + "PrintFlag" => "", + "FormType" => "0", + "Curr" => "EUR", + "ExChangeRate" => "1,0000", + "WIRRate" => "0", + "OneTimeCustomer" => array( + array( + "BankCode" => "", + "BankAccount" => "" + ) + ), + "Language" => "0", + "PriceGroup" => "1", + "PrFlag" => "0", + "SalesTaxKey" => "1", + "ProceedKey" => "0", + "CustDiscountGroup" => "0", + "Discount" => array( + array( + "FinDisc1" => "0,00", + "Disc1Base" => "145,72", + "Disc1Value" => "0,00", + "FinDisc2" => "0,00", + "Disc2Base" => "145,72", + "Disc2Value" => "0,00", + "FinDisc3" => "0,00", + "Disc3Base" => "145,72", + "Disc3Value" => "0,00", + "ValueSummary" => "0,00" + ) + ), + "Contact" => array( + array( + "Repr" => "999", + "Region" => "99", + "Commission" => "0,00", + "Agent" => "000000" + ) + ), + "Booking" => array( + array( + "CostUnit" => "0000000000", + "CostCentre" => "0000000000", + "AccountingArea"=> "01" + ) + ), + "InvoiceCycleKey" => "0", + "AnalysisKey" => "", + "OrderNumber" => "", + "OrderDate" => "", + "OrderCode" => "", + "DocItems" => array( + "DocItem" => array( + "PosType" => "1", + "ItemRef" => "1002", + "CRef" => "", + "Desc1" => "Pr�sentation Niederlande per", + "Desc2" => "", + "ArticleGroup" => "102", + "PosTypeVersion" => "E", + "Delivery" => array( + array( + "DelWeek" => "", + "DelDay" => "", + "DelTime" => "" + ) + ), + "PricePu" => "145,72", + "PriceUnit" => "0", + "PriceCalculation" => "0", + "ItemVal" => "145,72", + "InputKey" => "0", + "AveragePurchasePrice" => "0", + "Tax" => array( + array( + "TaxCode" => "00", + "TaxBra" => "000", + "TaxBraAccess" => "0", + "TaxSumIndex" => "0" + ) + ), + "DiscountArticle" => array( + array( + "DiscPC" => "0,00", + "DiscKey" => "1" + ) + ), + "ProceedKeyArticle" => "01", + "ActionKey" => "00", + "ContactCommissionArticle"=> "0,00", + "QuantDependantPriceKey"=> "", + "Quant" => "1", + "QuantUnit" => "", + "Meas" => array( + array( + "Count" => "1", + "Length" => "0,000", + "Width" => "0,000", + "Height" => "0,000" + ) + ), + "DecimalPlace" => "0", + "MultiplierQuant" => "1,000000", + "DifferingQuantUnit" => "", + "DecimalPlaceConversion"=> "0", + "WeightArticle" => array( + array( + "Amount" => "0", + "Unit" => "0" + ) + ), + "Wreath" => "0,000", + "Stock" => "1", + "CostUnitArticle" => "", + "SerialNbKey" => "0", + "TextComplementKey" => "0", + "PartsListPrintKey" => "", + "Prod" => "0000000000" + ) + ), + "Payment" => array( + "PaymentKey" => "0", + "ReminderKey" => "00", + "PayTerms" => array( + array( + "PayTerm" => "1", + "PayDays" => "000", + "CashDiscDays1" => "000", + "CashDiscDays2" => "000", + "CashDiscPer1" => "0,00", + "CashDiscPer2" => "0,00" + ), + array( + "PayTerm" => "2", + "PayDays" => "000", + "CashDiscDays1" => "000", + "CashDiscDays2" => "000", + "CashDiscPer1" => "0,00", + "CashDiscPer2" => "0,00" + ) + ) + ), + "NetAmountByTurnOverTax" => array( + array( + "TurnOverTaxFree" => "145,72", + "TurnOverTax1" => "0,00", + "TurnOverTax2" => "0,00", + "TurnOverTax3" => "0,00", + "TurnOverTax4" => "0,00", + "TurnOverTax5" => "0,00", + "TurnOverTax6" => "0,00", + "TurnOverTax7" => "0,00", + "TurnOverTax8" => "0,00" + ), + ), + "GrossAmount" => "145,72", + "ProceedAmount" => "145,72", + "NetAmountByPayTerm2" => array( + array( + "Sum0" => "0,00", + "Sum1" => "0,00", + "Sum2" => "0,00", + "Sum3" => "0,00", + "Sum4" => "0,00", + "Sum5" => "0,00", + "Sum6" => "0,00", + "Sum7" => "0,00", + "Sum8" => "0,00" + ), + ), + "TaxCodes" => array( + array( + "TaxCode1" => "0", + "TaxCode2" => "0", + "TaxCode3" => "0", + "TaxCode4" => "0", + "TaxCode5" => "0", + "TaxCode6" => "0", + "TaxCode7" => "0", + "TaxCode8" => "0" + ) + ) + ); + $docs = array( + array( + "Version" => "1.0", + "ProducerName" => "xxxxxxxx", + "ProductName" => "Classic Line", + "xmlns" => "x-schema:CL310_DezABFSchema.XML" + ), + "Company" => array( + array( + "MandateNumber" => "111", + "MandateName" => "xxx xxxxxxx-xxxxx xxxxxxx", + "MandateCurr" => "EUR" + ), + ), + "Doc" => $order + ); + + dump2xml($docs); + + +function dump2xml($array) { + // output of this goes through 2xml + array_walk_recursive($array, "gen_xml", "/Docs/"); +} +function gen_xml($val, $key, $prefix) +{ + global $xml_fd; + print "gen_xml(prefix=$prefix)\n"; + if (is_array($val)) { + if (preg_match('/^\d+$/', $key)) { + if ($key == 1) { + print substr($prefix, 0, -1) . "\n"; + } + array_walk_recursive($val, "gen_xml", "$prefix@"); + } + else { + array_walk_recursive($val, "gen_xml", "$prefix$key/"); + } + } + else { + if (strlen($val) > 0) + print "$prefix$key=$val\n"; + else + print "$prefix$key\n"; + } + print "gen_xml(prefix=$prefix) end\n"; +} +echo "Done\n"; +?> +--EXPECTF-- +gen_xml(prefix=/Docs/) +/Docs/Version=1.0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ProducerName=xxxxxxxx +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ProductName=Classic Line +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/xmlns=x-schema:CL310_DezABFSchema.XML +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/MandateNumber=111 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/MandateName=xxx xxxxxxx-xxxxx xxxxxxx +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/MandateCurr=EUR +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DocID=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DocDate=19.09.06 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ReSubmissionDate +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DocTyp=Stapelauftrag +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CustID=00000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Name1=name1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Name2=name2 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Name3 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/City=city +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Street=street +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Postal=postcode +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/IATA=90 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Country=Deutschland +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ShortName=short +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ContactKey +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/EMail=email@example.com +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Text1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Text2 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Wildcard1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Wildcard2 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Dispatch=Paketdienst +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Weight=0,0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/BillingCustID=4300200000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ExtDocNr=00000000003 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/AnalysisLock +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PrintFlag +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/FormType=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Curr=EUR +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ExChangeRate=1,0000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/WIRRate=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/BankCode +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/BankAccount +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Language=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PriceGroup=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PrFlag=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/SalesTaxKey=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ProceedKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CustDiscountGroup=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/FinDisc1=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc1Base=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc1Value=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/FinDisc2=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc2Base=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc2Value=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/FinDisc3=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc3Base=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Disc3Value=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ValueSummary=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Repr=999 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Region=99 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Commission=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Agent=000000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CostUnit=0000000000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CostCentre=0000000000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/AccountingArea=01 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/InvoiceCycleKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/AnalysisKey +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/OrderNumber +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/OrderDate +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/OrderCode +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PosType=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ItemRef=1002 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CRef +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Desc1=Pr�sentation Niederlande per +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Desc2 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ArticleGroup=102 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PosTypeVersion=E +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DelWeek +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DelDay +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DelTime +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PricePu=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PriceUnit=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PriceCalculation=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ItemVal=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/InputKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/AveragePurchasePrice=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode=00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxBra=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxBraAccess=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxSumIndex=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DiscPC=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DiscKey=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ProceedKeyArticle=01 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ActionKey=00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ContactCommissionArticle=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/QuantDependantPriceKey +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Quant=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/QuantUnit +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Count=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Length=0,000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Width=0,000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Height=0,000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DecimalPlace=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/MultiplierQuant=1,000000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DifferingQuantUnit +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/DecimalPlaceConversion=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Amount=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Unit=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Wreath=0,000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Stock=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CostUnitArticle +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/SerialNbKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TextComplementKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PartsListPrintKey +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Prod=0000000000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PaymentKey=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ReminderKey=00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PayTerm=1 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PayDays=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscDays1=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscDays2=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscPer1=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscPer2=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PayTerm=2 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/PayDays=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscDays1=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscDays2=000 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscPer1=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/CashDiscPer2=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTaxFree=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax1=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax2=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax3=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax4=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax5=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax6=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax7=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TurnOverTax8=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/GrossAmount=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/ProceedAmount=145,72 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum0=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum1=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum2=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum3=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum4=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum5=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum6=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum7=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/Sum8=0,00 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode1=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode2=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode3=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode4=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode5=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode6=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode7=0 +gen_xml(prefix=/Docs/) end +gen_xml(prefix=/Docs/) +/Docs/TaxCode8=0 +gen_xml(prefix=/Docs/) end +Done diff --git a/ext/standard/tests/array/bug38464.phpt b/ext/standard/tests/array/bug38464.phpt new file mode 100644 index 000000000..42f7a6ab5 --- /dev/null +++ b/ext/standard/tests/array/bug38464.phpt @@ -0,0 +1,20 @@ +--TEST-- +Bug #38464 (array_count_values() mishandles numeric strings) +--FILE-- +<?php +$array = array('-000', ' 001', 1, ' 123', '+123'); +var_dump(array_count_values($array)); +?> +--EXPECT-- +array(5) { + ["-000"]=> + int(1) + [" 001"]=> + int(1) + [1]=> + int(1) + [" 123"]=> + int(1) + ["+123"]=> + int(1) +} diff --git a/ext/standard/tests/array/max.phpt b/ext/standard/tests/array/max.phpt new file mode 100644 index 000000000..7edcab755 --- /dev/null +++ b/ext/standard/tests/array/max.phpt @@ -0,0 +1,39 @@ +--TEST-- +max() tests +--FILE-- +<?php + +var_dump(max()); +var_dump(max(1)); +var_dump(max(array())); +var_dump(max(new stdclass)); +var_dump(max(2,1,2)); +var_dump(max(2.1,2.11,2.09)); +var_dump(max("", "t", "b")); +var_dump(max(false, true, false)); +var_dump(max(true, false, true)); +var_dump(max(1, true, false, true)); +var_dump(max(0, true, false, true)); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: max(): Atleast one value should be passed in %s on line %d +NULL + +Warning: Wrong parameter count for max() in %s on line %d +NULL + +Warning: max(): Array must contain atleast one element in %s on line %d +bool(false) + +Warning: Wrong parameter count for max() in %s on line %d +NULL +int(2) +float(2.11) +string(1) "t" +bool(true) +bool(true) +int(1) +bool(true) +Done diff --git a/ext/standard/tests/array/min.phpt b/ext/standard/tests/array/min.phpt new file mode 100644 index 000000000..70e3555f1 --- /dev/null +++ b/ext/standard/tests/array/min.phpt @@ -0,0 +1,39 @@ +--TEST-- +min() tests +--FILE-- +<?php + +var_dump(min()); +var_dump(min(1)); +var_dump(min(array())); +var_dump(min(new stdclass)); +var_dump(min(2,1,2)); +var_dump(min(2.1,2.11,2.09)); +var_dump(min("", "t", "b")); +var_dump(min(false, true, false)); +var_dump(min(true, false, true)); +var_dump(min(1, true, false, true)); +var_dump(min(0, true, false, true)); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: min(): Atleast one value should be passed in %s on line %d +NULL + +Warning: Wrong parameter count for min() in %s on line %d +NULL + +Warning: min(): Array must contain atleast one element in %s on line %d +bool(false) + +Warning: Wrong parameter count for min() in %s on line %d +NULL +int(1) +float(2.09) +string(0) "" +bool(false) +bool(false) +bool(false) +int(0) +Done diff --git a/ext/standard/tests/assert/assert02.phpt b/ext/standard/tests/assert/assert02.phpt new file mode 100644 index 000000000..88a1e1242 --- /dev/null +++ b/ext/standard/tests/assert/assert02.phpt @@ -0,0 +1,42 @@ +--TEST-- +catch assert() errors +--FILE-- +<?php +function handler($errno, $errstr) { + echo "in handler()\n"; + assert(E_RECOVERABLE_ERROR === $errno); + var_dump($errstr); +} + +set_error_handler('handler', E_RECOVERABLE_ERROR); + +assert(1); +assert('1'); +assert('$a'); + +assert('aa=sd+as+safsafasfasafsaf'); + +assert('0'); + +assert_options(ASSERT_BAIL, 1); +assert('aa=sd+as+safsafasfasafsaf'); + +echo "done\n"; + +?> +--EXPECTF-- +Notice: Undefined variable: a in %sassert02.php(12) : assert code on line 1 + +Warning: assert(): Assertion "$a" failed in %sassert02.php on line %d + +Parse error: %s error%sassert02.php(%d) : assert code on line 1 +in handler() +string(64) "assert(): Failure evaluating code: +aa=sd+as+safsafasfasafsaf" + +Warning: assert(): Assertion "0" failed in %sassert02.php on line %d + +Parse error: %s error%sassert02.php(%d) : assert code on line 1 +in handler() +string(64) "assert(): Failure evaluating code: +aa=sd+as+safsafasfasafsaf" diff --git a/ext/standard/tests/file/bug22414.phpt b/ext/standard/tests/file/bug22414.phpt index f4f097d66..0775fc8a7 100644 --- a/ext/standard/tests/file/bug22414.phpt +++ b/ext/standard/tests/file/bug22414.phpt @@ -15,7 +15,6 @@ output_handler= echo "\n"; /* Binary Data Test */ - @unlink($pwd . '/passthru_test'); $cmd = $php . ' -n -r \"readfile(@getenv(\'TEST_PHP_EXECUTABLE\')); \"'; $cmd = $php . ' -n -r \' passthru("'.$cmd.'"); \' > '.$tmpfile ; diff --git a/ext/standard/tests/file/bug24313.phpt b/ext/standard/tests/file/bug24313.phpt index 4b84bcac4..04057c58a 100644 --- a/ext/standard/tests/file/bug24313.phpt +++ b/ext/standard/tests/file/bug24313.phpt @@ -1,10 +1,10 @@ --TEST-- -Bug #24313 (file_exists() warning on non-existant files when is open_basedir enabled) +Bug #24313 (file_exists() throws a warning on nonexistent files when is open_basedir enabled) --INI-- -open_basedir=/tmp +open_basedir=/dev --FILE-- <?php - var_dump(file_exists("/tmp/bogus_file_no_such_thing")); + var_dump(file_exists("/dev/bogus_file_no_such_thing")); ?> --EXPECT-- bool(false) diff --git a/ext/standard/tests/file/bug37864.phpt b/ext/standard/tests/file/bug37864.phpt new file mode 100644 index 000000000..d74647cc7 --- /dev/null +++ b/ext/standard/tests/file/bug37864.phpt @@ -0,0 +1,12 @@ +--TEST-- +Bug #37864 (file_get_contents() leaks on empty file) +--FILE-- +<?php + $tmpfname = tempnam("/tmp", "emptyfile"); + var_dump(file_get_contents($tmpfname)); + echo "done.\n"; + unlink($tmpfname); +?> +--EXPECT-- +string(0) "" +done. diff --git a/ext/standard/tests/file/bug38086.phpt b/ext/standard/tests/file/bug38086.phpt new file mode 100644 index 000000000..ed8af75a4 --- /dev/null +++ b/ext/standard/tests/file/bug38086.phpt @@ -0,0 +1,46 @@ +--TEST-- +Bug #38086 (stream_copy_to_stream() returns 0 when maxlen is bigger than the actual length) +--FILE-- +<?php + +$initial_file = dirname(__FILE__).'/bug38086.txt'; +$new_file = dirname(__FILE__).'/bug38086_1.txt'; + +$src = fopen($initial_file, 'r'); +stream_filter_append($src, "string.rot13", STREAM_FILTER_READ); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +$src = fopen($initial_file, 'r'); +stream_filter_append($src, "string.rot13", STREAM_FILTER_READ); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, 10000)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +echo "Done\n"; +?> +--EXPECTF-- +int(134) +string(134) "Nabgure qnl +Jura gur cnvaf bs yvsr jba'g one zl jnl +V'yy oernx gurfr punvaf +Gung ubyq zr qbja +V'yy grne lbh qbja vagb zl cevingr uryy +" +int(134) +string(134) "Nabgure qnl +Jura gur cnvaf bs yvsr jba'g one zl jnl +V'yy oernx gurfr punvaf +Gung ubyq zr qbja +V'yy grne lbh qbja vagb zl cevingr uryy +" +Done diff --git a/ext/standard/tests/file/bug38086.txt b/ext/standard/tests/file/bug38086.txt new file mode 100644 index 000000000..8e324724c --- /dev/null +++ b/ext/standard/tests/file/bug38086.txt @@ -0,0 +1,5 @@ +Another day +When the pains of life won't bar my way +I'll break these chains +That hold me down +I'll tear you down into my private hell diff --git a/ext/standard/tests/file/bug38450.phpt b/ext/standard/tests/file/bug38450.phpt new file mode 100644 index 000000000..6fcdab871 --- /dev/null +++ b/ext/standard/tests/file/bug38450.phpt @@ -0,0 +1,114 @@ +--TEST-- +Bug #38450 (constructor is not called for classes used in userspace stream wrappers) +--FILE-- +<?php + +class VariableStream { + var $position; + var $varname; + + function VariableStream($var) { + var_dump("constructor!"); + } + + function stream_open($path, $mode, $options, &$opened_path) + { + $url = parse_url($path); + $this->varname = $url["host"]; + $this->position = 0; + + return true; + } + + function stream_read($count) + { + $ret = substr($GLOBALS[$this->varname], $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + function stream_write($data) + { + $left = substr($GLOBALS[$this->varname], 0, $this->position); + $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); + $GLOBALS[$this->varname] = $left . $data . $right; + $this->position += strlen($data); + return strlen($data); + } + + function stream_tell() + { + return $this->position; + } + + function stream_eof() + { + return $this->position >= strlen($GLOBALS[$this->varname]); + } + function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { + $this->position = strlen($GLOBALS[$this->varname]) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} + +stream_wrapper_register("var", "VariableStream") + or die("Failed to register protocol"); + +$myvar = ""; + +$fp = fopen("var://myvar", "r+"); + +fwrite($fp, "line1\n"); +fwrite($fp, "line2\n"); +fwrite($fp, "line3\n"); + +rewind($fp); +while (!feof($fp)) { + echo fgets($fp); +} +fclose($fp); +var_dump($myvar); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: Missing argument 1 for VariableStream::VariableStream() in %s on line %d +string(12) "constructor!" +line1 +line2 +line3 +string(18) "line1 +line2 +line3 +" +Done diff --git a/ext/standard/tests/file/bug38450_1.phpt b/ext/standard/tests/file/bug38450_1.phpt new file mode 100644 index 000000000..094755e47 --- /dev/null +++ b/ext/standard/tests/file/bug38450_1.phpt @@ -0,0 +1,114 @@ +--TEST-- +Bug #38450 (constructor is not called for classes used in userspace stream wrappers) +--FILE-- +<?php + +class VariableStream { + var $position; + var $varname; + + function __construct($var) { + var_dump("constructor!"); + } + + function stream_open($path, $mode, $options, &$opened_path) + { + $url = parse_url($path); + $this->varname = $url["host"]; + $this->position = 0; + + return true; + } + + function stream_read($count) + { + $ret = substr($GLOBALS[$this->varname], $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + function stream_write($data) + { + $left = substr($GLOBALS[$this->varname], 0, $this->position); + $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); + $GLOBALS[$this->varname] = $left . $data . $right; + $this->position += strlen($data); + return strlen($data); + } + + function stream_tell() + { + return $this->position; + } + + function stream_eof() + { + return $this->position >= strlen($GLOBALS[$this->varname]); + } + function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { + $this->position = strlen($GLOBALS[$this->varname]) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} + +stream_wrapper_register("var", "VariableStream") + or die("Failed to register protocol"); + +$myvar = ""; + +$fp = fopen("var://myvar", "r+"); + +fwrite($fp, "line1\n"); +fwrite($fp, "line2\n"); +fwrite($fp, "line3\n"); + +rewind($fp); +while (!feof($fp)) { + echo fgets($fp); +} +fclose($fp); +var_dump($myvar); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: Missing argument 1 for VariableStream::__construct() in %s on line %d +string(12) "constructor!" +line1 +line2 +line3 +string(18) "line1 +line2 +line3 +" +Done diff --git a/ext/standard/tests/file/bug38450_2.phpt b/ext/standard/tests/file/bug38450_2.phpt new file mode 100644 index 000000000..625fd7c5c --- /dev/null +++ b/ext/standard/tests/file/bug38450_2.phpt @@ -0,0 +1,114 @@ +--TEST-- +Bug #38450 (constructor is not called for classes used in userspace stream wrappers) +--FILE-- +<?php + +class VariableStream { + var $position; + var $varname; + + function __construct($var) { + throw new Exception("constructor"); + } + + function stream_open($path, $mode, $options, &$opened_path) + { + $url = parse_url($path); + $this->varname = $url["host"]; + $this->position = 0; + + return true; + } + + function stream_read($count) + { + $ret = substr($GLOBALS[$this->varname], $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + function stream_write($data) + { + $left = substr($GLOBALS[$this->varname], 0, $this->position); + $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); + $GLOBALS[$this->varname] = $left . $data . $right; + $this->position += strlen($data); + return strlen($data); + } + + function stream_tell() + { + return $this->position; + } + + function stream_eof() + { + return $this->position >= strlen($GLOBALS[$this->varname]); + } + function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { + $this->position = strlen($GLOBALS[$this->varname]) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} + +stream_wrapper_register("var", "VariableStream") + or die("Failed to register protocol"); + +$myvar = ""; + +$fp = fopen("var://myvar", "r+"); + +fwrite($fp, "line1\n"); +fwrite($fp, "line2\n"); +fwrite($fp, "line3\n"); + +rewind($fp); +while (!feof($fp)) { + echo fgets($fp); +} +fclose($fp); +var_dump($myvar); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: Missing argument 1 for VariableStream::__construct() in %s on line %d + +Warning: fopen(var://myvar): failed to open stream: "VariableStream::stream_open" call failed in %s on line %d + +Fatal error: Uncaught exception 'Exception' with message 'constructor' in %s:%d +Stack trace: +#0 [internal function]: VariableStream->__construct() +#1 %s(%d): fopen('var://myvar', 'r+') +#2 {main} + thrown in %s on line %d diff --git a/ext/standard/tests/file/bug38450_3.phpt b/ext/standard/tests/file/bug38450_3.phpt new file mode 100644 index 000000000..d11ebd91e --- /dev/null +++ b/ext/standard/tests/file/bug38450_3.phpt @@ -0,0 +1,105 @@ +--TEST-- +Bug #38450 (constructor is not called for classes used in userspace stream wrappers) +--FILE-- +<?php + +class VariableStream { + var $position; + var $varname; + + function __construct(array $var) { + var_dump("constructor!"); + } + + function stream_open($path, $mode, $options, &$opened_path) + { + $url = parse_url($path); + $this->varname = $url["host"]; + $this->position = 0; + + return true; + } + + function stream_read($count) + { + $ret = substr($GLOBALS[$this->varname], $this->position, $count); + $this->position += strlen($ret); + return $ret; + } + + function stream_write($data) + { + $left = substr($GLOBALS[$this->varname], 0, $this->position); + $right = substr($GLOBALS[$this->varname], $this->position + strlen($data)); + $GLOBALS[$this->varname] = $left . $data . $right; + $this->position += strlen($data); + return strlen($data); + } + + function stream_tell() + { + return $this->position; + } + + function stream_eof() + { + return $this->position >= strlen($GLOBALS[$this->varname]); + } + function stream_seek($offset, $whence) + { + switch ($whence) { + case SEEK_SET: + if ($offset < strlen($GLOBALS[$this->varname]) && $offset >= 0) { + $this->position = $offset; + return true; + } else { + return false; + } + break; + + case SEEK_CUR: + if ($offset >= 0) { + $this->position += $offset; + return true; + } else { + return false; + } + break; + + case SEEK_END: + if (strlen($GLOBALS[$this->varname]) + $offset >= 0) { + $this->position = strlen($GLOBALS[$this->varname]) + $offset; + return true; + } else { + return false; + } + break; + + default: + return false; + } + } +} + +stream_wrapper_register("var", "VariableStream") + or die("Failed to register protocol"); + +$myvar = ""; + +$fp = fopen("var://myvar", "r+"); + +fwrite($fp, "line1\n"); +fwrite($fp, "line2\n"); +fwrite($fp, "line3\n"); + +rewind($fp); +while (!feof($fp)) { + echo fgets($fp); +} +fclose($fp); +var_dump($myvar); + +echo "Done\n"; +?> +--EXPECTF-- +Catchable fatal error: Argument 1 passed to VariableStream::__construct() must be an array, none given in %s on line %d diff --git a/ext/standard/tests/file/file_put_contents.phpt b/ext/standard/tests/file/file_put_contents.phpt new file mode 100644 index 000000000..de08141b8 --- /dev/null +++ b/ext/standard/tests/file/file_put_contents.phpt @@ -0,0 +1,28 @@ +--TEST-- +file_put_contents() and invalid parameters +--FILE-- +<?php + +$file = dirname(__FILE__)."/file_put_contents.txt"; + +$context = stream_context_create(); + +var_dump(file_put_contents($file, $context)); +var_dump(file_put_contents($file, new stdClass)); +$fp = fopen($file, "r"); +var_dump(file_put_contents($file, "string", 0, $fp)); + +@unlink($file); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: file_put_contents(): supplied resource is not a valid stream resource in %s on line %d +bool(false) + +Warning: file_put_contents(): The 2nd parameter should be either a string or an array in %s on line %d +bool(false) + +Warning: file_put_contents(): supplied resource is not a valid Stream-Context resource in %s on line %d +int(6) +Done diff --git a/ext/standard/tests/file/mkdir-001.phpt b/ext/standard/tests/file/mkdir-001.phpt new file mode 100644 index 000000000..be653da29 --- /dev/null +++ b/ext/standard/tests/file/mkdir-001.phpt @@ -0,0 +1,36 @@ +--TEST-- +mkdir() tests +--FILE-- +<?php + +var_dump(mkdir("testdir")); +var_dump(mkdir("testdir/subdir")); +var_dump(rmdir("testdir/subdir")); +var_dump(rmdir("testdir")); + +var_dump(mkdir("./testdir")); +var_dump(mkdir("./testdir/subdir")); +var_dump(rmdir("./testdir/subdir")); +var_dump(rmdir("./testdir")); + +var_dump(mkdir(dirname(__FILE__)."/testdir")); +var_dump(mkdir(dirname(__FILE__)."/testdir/subdir")); +var_dump(rmdir(dirname(__FILE__)."/testdir/subdir")); +var_dump(rmdir(dirname(__FILE__)."/testdir")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/mkdir-002.phpt b/ext/standard/tests/file/mkdir-002.phpt new file mode 100644 index 000000000..bc4f19aca --- /dev/null +++ b/ext/standard/tests/file/mkdir-002.phpt @@ -0,0 +1,49 @@ +--TEST-- +mkdir(dir, 0777) tests +--FILE-- +<?php + +var_dump(mkdir("testdir", 0777)); +var_dump(mkdir("testdir/subdir", 0777)); +var_dump(`ls -l testdir`); +var_dump(rmdir("testdir/subdir")); +var_dump(rmdir("testdir")); + +var_dump(mkdir("./testdir", 0777)); +var_dump(mkdir("./testdir/subdir", 0777)); +var_dump(`ls -l ./testdir`); +var_dump(rmdir("./testdir/subdir")); +var_dump(rmdir("./testdir")); + +var_dump(mkdir(dirname(__FILE__)."/testdir", 0777)); +var_dump(mkdir(dirname(__FILE__)."/testdir/subdir", 0777)); +$dirname = dirname(__FILE__)."/testdir"; +var_dump(`ls -l $dirname`); +var_dump(rmdir(dirname(__FILE__)."/testdir/subdir")); +var_dump(rmdir(dirname(__FILE__)."/testdir")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +string(%d) "%s +d%s subdir +" +bool(true) +bool(true) +bool(true) +bool(true) +string(%d) "%s +d%s subdir +" +bool(true) +bool(true) +bool(true) +bool(true) +string(%d) "%s +d%s subdir +" +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/mkdir-003.phpt b/ext/standard/tests/file/mkdir-003.phpt new file mode 100644 index 000000000..50ad5e6c4 --- /dev/null +++ b/ext/standard/tests/file/mkdir-003.phpt @@ -0,0 +1,30 @@ +--TEST-- +recursive mkdir() tests +--FILE-- +<?php + +var_dump(mkdir("testdir/subdir", 0777, true)); +var_dump(rmdir("testdir/subdir")); +var_dump(rmdir("testdir")); + +var_dump(mkdir("./testdir/subdir", 0777, true)); +var_dump(rmdir("./testdir/subdir")); +var_dump(rmdir("./testdir")); + +var_dump(mkdir(dirname(__FILE__)."/testdir/subdir", 0777, true)); +var_dump(rmdir(dirname(__FILE__)."/testdir/subdir")); +var_dump(rmdir(dirname(__FILE__)."/testdir")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/mkdir-004.phpt b/ext/standard/tests/file/mkdir-004.phpt new file mode 100644 index 000000000..45c275106 --- /dev/null +++ b/ext/standard/tests/file/mkdir-004.phpt @@ -0,0 +1,24 @@ +--TEST-- +recursive mkdir() tests +--SKIPIF-- +<?php +chdir("/"); +if (!@mkdir("testtmpskipifdir")) { + die("skip for root only"); +} +rmdir("testtmpskipifdir"); +?> +--FILE-- +<?php + +var_dump(mkdir("/testdir/subdir", 0777, true)); +var_dump(rmdir("/testdir/subdir")); +var_dump(rmdir("/testdir")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/mkdir-005.phpt b/ext/standard/tests/file/mkdir-005.phpt new file mode 100644 index 000000000..af2387ca7 --- /dev/null +++ b/ext/standard/tests/file/mkdir-005.phpt @@ -0,0 +1,25 @@ +--TEST-- +recursive mkdir() tests +--SKIPIF-- +<?php +chdir("/"); +if (!@mkdir("testtmpskipifdir")) { + die("skip for root only"); +} +rmdir("testtmpskipifdir"); +?> +--FILE-- +<?php + +chdir("/"); +var_dump(mkdir("./testdir/subdir", 0777, true)); +var_dump(rmdir("./testdir/subdir")); +var_dump(rmdir("./testdir")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) +bool(true) +bool(true) +Done diff --git a/ext/standard/tests/file/mkdir-006.phpt b/ext/standard/tests/file/mkdir-006.phpt new file mode 100644 index 000000000..5bfa8e814 --- /dev/null +++ b/ext/standard/tests/file/mkdir-006.phpt @@ -0,0 +1,26 @@ +--TEST-- +recursive mkdir() with unclean paths +--SKIPIF-- +<?php +if (substr(PHP_OS, 0, 3) != 'WIN') { + die('skip only for Windows'); +} +?> +--FILE-- +<?php +chdir(dirname(__FILE__)); +$dirpath = "./tmp/foo//bar/logs"; +mkdir($dirpath, 0777, true); + +if (is_dir($dirpath)) { + echo "Ok.\n"; +} else { + echo "Failed.\n"; +} +rmdir("./tmp/foo/bar/logs"); +rmdir("./tmp/foo/bar/"); +rmdir("./tmp/foo/"); +rmdir("./tmp/"); +?> +--EXPECT-- +Ok. diff --git a/ext/standard/tests/file/stream_001.phpt b/ext/standard/tests/file/stream_001.phpt new file mode 100644 index 000000000..8a3f03409 --- /dev/null +++ b/ext/standard/tests/file/stream_001.phpt @@ -0,0 +1,24 @@ +--TEST-- +stream_wrapper_unregister() & stream_wrapper_restore() +--FILE-- +<?php + +var_dump(stream_wrapper_unregister('file')); +var_dump(fopen("file://".__FILE__, "r")); +var_dump(stream_wrapper_restore('file')); +var_dump(fopen("file://".__FILE__, "r")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(true) + +Notice: fopen(): Unable to find the wrapper "file" - did you forget to enable it when you configured PHP? in %s on line %d + +Warning: fopen(): Plainfiles wrapper disabled in %s on line %d + +Warning: fopen(file:///%s): failed to open stream: no suitable wrapper could be found in %s on line %d +bool(false) +bool(true) +resource(%d) of type (stream) +Done diff --git a/ext/standard/tests/file/stream_002.phpt b/ext/standard/tests/file/stream_002.phpt new file mode 100644 index 000000000..ae10abf2d --- /dev/null +++ b/ext/standard/tests/file/stream_002.phpt @@ -0,0 +1,53 @@ +--TEST-- +stream_socket_client() and invalid arguments +--FILE-- +<?php + +$a = NULL; +$b = NULL; +var_dump(stream_socket_client("", $a, $b)); +var_dump($a, $b); +var_dump(stream_socket_client("[", $a, $b)); +var_dump($a, $b); +var_dump(stream_socket_client("[ ", $a, $b)); +var_dump($a, $b); +var_dump(stream_socket_client(".", $a, $b)); +var_dump($a, $b); +var_dump(stream_socket_client(1, $a, $b)); +var_dump($a, $b); +var_dump(stream_socket_client(array(), $a, $b)); +var_dump($a, $b); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: stream_socket_client(): unable to connect to (Failed to parse address "") in %s on line %d +bool(false) +int(0) +string(26) "Failed to parse address """ + +Warning: stream_socket_client(): unable to connect to [ (Failed to parse address "[") in %s on line %d +bool(false) +int(0) +string(27) "Failed to parse address "["" + +Warning: stream_socket_client(): unable to connect to [ (Failed to parse IPv6 address "[ ") in %s on line %d +bool(false) +int(0) +string(33) "Failed to parse IPv6 address "[ "" + +Warning: stream_socket_client(): unable to connect to . (Failed to parse address ".") in %s on line %d +bool(false) +int(0) +string(27) "Failed to parse address "."" + +Warning: stream_socket_client(): unable to connect to 1 (Failed to parse address "1") in %s on line %d +bool(false) +int(0) +string(27) "Failed to parse address "1"" + +Warning: stream_socket_client() expects parameter 1 to be string, array given in %s on line %d +bool(false) +int(0) +string(27) "Failed to parse address "1"" +Done diff --git a/ext/standard/tests/file/stream_copy_to_stream.phpt b/ext/standard/tests/file/stream_copy_to_stream.phpt new file mode 100644 index 000000000..3f46eec0c --- /dev/null +++ b/ext/standard/tests/file/stream_copy_to_stream.phpt @@ -0,0 +1,129 @@ +--TEST-- +stream_copy_to_stream() tests +--FILE-- +<?php + +$initial_file = dirname(__FILE__).'/bug38086.txt'; +$new_file = dirname(__FILE__).'/bug38086_1.txt'; + +$src = fopen($initial_file, 'r'); +stream_filter_append($src, "string.rot13", STREAM_FILTER_READ); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, 0)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); +stream_filter_append($src, "string.rot13", STREAM_FILTER_READ); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, -1)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); +stream_filter_append($src, "string.rot13", STREAM_FILTER_READ); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, 1000000)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, 10)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +/* --- */ + +$src = fopen($initial_file, 'r'); + +$dest = fopen($new_file, 'w'); +var_dump(stream_copy_to_stream($src, $dest, -1)); +fclose($src); fclose($dest); + +var_dump(file_get_contents($new_file)); +unlink($new_file); + +echo "Done\n"; +?> +--EXPECTF-- +int(0) +string(0) "" +int(134) +string(134) "Nabgure qnl +Jura gur cnvaf bs yvsr jba'g one zl jnl +V'yy oernx gurfr punvaf +Gung ubyq zr qbja +V'yy grne lbh qbja vagb zl cevingr uryy +" +int(134) +string(134) "Nabgure qnl +Jura gur cnvaf bs yvsr jba'g one zl jnl +V'yy oernx gurfr punvaf +Gung ubyq zr qbja +V'yy grne lbh qbja vagb zl cevingr uryy +" +int(134) +string(134) "Another day +When the pains of life won't bar my way +I'll break these chains +That hold me down +I'll tear you down into my private hell +" +int(134) +string(134) "Another day +When the pains of life won't bar my way +I'll break these chains +That hold me down +I'll tear you down into my private hell +" +int(10) +string(10) "Another da" +int(134) +string(134) "Another day +When the pains of life won't bar my way +I'll break these chains +That hold me down +I'll tear you down into my private hell +" +Done diff --git a/ext/standard/tests/file/stream_rfc2397_001.phpt b/ext/standard/tests/file/stream_rfc2397_001.phpt new file mode 100755 index 000000000..23a573092 --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_001.phpt @@ -0,0 +1,20 @@ +--TEST-- +Stream: RFC2397 +--FILE-- +<?php + +$data = 'data://,hello world'; + +var_dump(file_get_contents($data)); + +$file = fopen($data, 'r'); +unset($data); + +var_dump(stream_get_contents($file)); + +?> +===DONE=== +--EXPECT-- +string(11) "hello world" +string(11) "hello world" +===DONE===
\ No newline at end of file diff --git a/ext/standard/tests/file/stream_rfc2397_002.phpt b/ext/standard/tests/file/stream_rfc2397_002.phpt new file mode 100755 index 000000000..0a0a14a8e --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_002.phpt @@ -0,0 +1,180 @@ +--TEST-- +Stream: RFC2397 getting meta data +--FILE-- +<?php + +$streams = array( + 'data://,', + 'data://', + 'data://;base64,', + 'data://;base64', + 'data://foo,', + 'data://foo=bar,', + 'data://text/plain,', + 'data://text/plain;foo,', + 'data://text/plain;foo=bar,', + 'data://text/plain;foo=bar;bla,', + 'data://text/plain;foo=bar;base64,', + 'data://text/plain;foo=bar;bar=baz', + 'data://text/plain;foo=bar;bar=baz,', + ); + +foreach($streams as $stream) +{ + $stream = fopen($stream, 'r'); + $meta = @stream_get_meta_data($stream); + var_dump($meta); + var_dump(isset($meta['foo']) ? $meta['foo'] : null); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +array(7) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(8) "data://," + ["base64"]=> + bool(false) +} +NULL + +Warning: fopen(data://): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d +bool(false) +NULL +array(7) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(15) "data://;base64," + ["base64"]=> + bool(true) +} +NULL + +Warning: fopen(data://;base64): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d +bool(false) +NULL + +Warning: fopen(data://foo,): failed to open stream: rfc2397: illegal media type in %sstream_rfc2397_002.php on line %d +bool(false) +NULL + +Warning: fopen(data://foo=bar,): failed to open stream: rfc2397: illegal media type in %sstream_rfc2397_002.php on line %d +bool(false) +NULL +array(8) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(18) "data://text/plain," + ["mediatype"]=> + string(10) "text/plain" + ["base64"]=> + bool(false) +} +NULL + +Warning: fopen(data://text/plain;foo,): failed to open stream: rfc2397: illegal parameter in %sstream_rfc2397_002.php on line %d +bool(false) +NULL +array(9) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(26) "data://text/plain;foo=bar," + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["base64"]=> + bool(false) +} +string(3) "bar" + +Warning: fopen(data://text/plain;foo=bar;bla,): failed to open stream: rfc2397: illegal parameter in %sstream_rfc2397_002.php on line %d +bool(false) +NULL +array(9) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(33) "data://text/plain;foo=bar;base64," + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["base64"]=> + bool(true) +} +string(3) "bar" + +Warning: fopen(data://text/plain;foo=bar;bar=baz): failed to open stream: rfc2397: no comma in URL in %sstream_rfc2397_002.php on line %d +bool(false) +NULL +array(10) { + ["wrapper_type"]=> + string(7) "RFC2397" + ["stream_type"]=> + string(7) "RFC2397" + ["mode"]=> + string(1) "r" + ["unread_bytes"]=> + int(0) + ["seekable"]=> + bool(true) + ["uri"]=> + string(34) "data://text/plain;foo=bar;bar=baz," + ["mediatype"]=> + string(10) "text/plain" + ["foo"]=> + string(3) "bar" + ["bar"]=> + string(3) "baz" + ["base64"]=> + bool(false) +} +string(3) "bar" +===DONE=== diff --git a/ext/standard/tests/file/stream_rfc2397_003.gif b/ext/standard/tests/file/stream_rfc2397_003.gif Binary files differnew file mode 100755 index 000000000..3dc4fc65f --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_003.gif diff --git a/ext/standard/tests/file/stream_rfc2397_003.phpt b/ext/standard/tests/file/stream_rfc2397_003.phpt new file mode 100755 index 000000000..a4d019d18 --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_003.phpt @@ -0,0 +1,36 @@ +--TEST-- +Stream: RFC2397 decoding data +--FILE-- +<?php + +$streams = array( + 'data://,A%20brief%20note', + 'data://application/vnd-xxx-query,select_vcount,fcol_from_fieldtable/local', + 'data://;base64,Zm9vYmFyIGZvb2Jhcg==', + 'stream_rfc2397_003.gif' => 'data://image/gif;base64,R0lGODdhMAAwAPAAAAAAAP///ywAAAAAMAAw +AAAC8IyPqcvt3wCcDkiLc7C0qwyGHhSWpjQu5yqmCYsapyuvUUlvONmOZtfzgFz +ByTB10QgxOR0TqBQejhRNzOfkVJ+5YiUqrXF5Y5lKh/DeuNcP5yLWGsEbtLiOSp +a/TPg7JpJHxyendzWTBfX0cxOnKPjgBzi4diinWGdkF8kjdfnycQZXZeYGejmJl +ZeGl9i2icVqaNVailT6F5iJ90m6mvuTS4OK05M0vDk0Q4XUtwvKOzrcd3iq9uis +F81M1OIcR7lEewwcLp7tuNNkM3uNna3F2JQFo97Vriy/Xl4/f1cf5VWzXyym7PH +hhx4dbgYKAAA7', + ); + +foreach($streams as $original => $stream) +{ + if (is_string($original)) { + var_dump(file_get_contents(dirname(__FILE__) . '/' . $original) == file_get_contents($stream)); + } else { + var_dump(file_get_contents($stream)); + } +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +string(12) "A brief note" +string(40) "select_vcount,fcol_from_fieldtable/local" +string(13) "foobar foobar" +bool(true) +===DONE=== diff --git a/ext/standard/tests/file/stream_rfc2397_004.phpt b/ext/standard/tests/file/stream_rfc2397_004.phpt new file mode 100755 index 000000000..ac7156476 --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_004.phpt @@ -0,0 +1,30 @@ +--TEST-- +Stream: RFC2397 Mozilla tests +--FILE-- +<?php + +$streams = array( + 'data://,;test', + 'data://text/plain,test', + 'data://text/plain;charset=US-ASCII,test', + 'data://;charset=UTF-8,Hello', + 'data://text/plain;charset=UTF-8,Hello', + 'data://,a,b', + ); + +foreach($streams as $stream) +{ + var_dump(@file_get_contents($stream)); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +string(5) ";test" +string(4) "test" +string(4) "test" +bool(false) +string(5) "Hello" +string(3) "a,b" +===DONE===
\ No newline at end of file diff --git a/ext/standard/tests/file/stream_rfc2397_005.phpt b/ext/standard/tests/file/stream_rfc2397_005.phpt new file mode 100755 index 000000000..892af432b --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_005.phpt @@ -0,0 +1,36 @@ +--TEST-- +Stream: RFC2397 without // +--FILE-- +<?php + +$streams = array( + 'data:,A%20brief%20note', + 'data:application/vnd-xxx-query,select_vcount,fcol_from_fieldtable/local', + 'data:;base64,Zm9vYmFyIGZvb2Jhcg==', + 'data:,;test', + 'data:text/plain,test', + 'data:text/plain;charset=US-ASCII,test', + 'data:;charset=UTF-8,Hello', + 'data:text/plain;charset=UTF-8,Hello', + 'data:,a,b', + ); + +foreach($streams as $stream) +{ + var_dump(@file_get_contents($stream)); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +string(12) "A brief note" +string(40) "select_vcount,fcol_from_fieldtable/local" +string(13) "foobar foobar" +string(5) ";test" +string(4) "test" +string(4) "test" +bool(false) +string(5) "Hello" +string(3) "a,b" +===DONE===
\ No newline at end of file diff --git a/ext/standard/tests/file/stream_rfc2397_006.phpt b/ext/standard/tests/file/stream_rfc2397_006.phpt new file mode 100755 index 000000000..06734fba3 --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_006.phpt @@ -0,0 +1,28 @@ +--TEST-- +Stream: RFC2397 with corrupt? payload +--FILE-- +<?php + +$streams = array( + "data:;base64,\0Zm9vYmFyIGZvb2Jhcg==", + "data:;base64,Zm9vYmFy\0IGZvb2Jhcg==", + 'data:;base64,#Zm9vYmFyIGZvb2Jhcg==', + 'data:;base64,#Zm9vYmFyIGZvb2Jhc=', + ); + +foreach($streams as $stream) +{ + var_dump(file_get_contents($stream)); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +string(0) "" +string(6) "foobar" +string(13) "foobar foobar" + +Warning: file_get_contents(data:;base64,#Zm9vYmFyIGZvb2Jhc=): failed to open stream: rfc2397: unable to decode in %sstream_rfc2397_006.php on line %d +bool(false) +===DONE=== diff --git a/ext/standard/tests/file/stream_rfc2397_007.phpt b/ext/standard/tests/file/stream_rfc2397_007.phpt new file mode 100755 index 000000000..e4341526d --- /dev/null +++ b/ext/standard/tests/file/stream_rfc2397_007.phpt @@ -0,0 +1,141 @@ +--TEST-- +Stream: RFC2397 and seeking +--FILE-- +<?php + +$streams = array( + "data:,012345", + ); + +foreach($streams as $stream) +{ + echo "===$stream===\n"; + + $fp = fopen($stream, 'rb'); + + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:4,S===\n"; + var_dump(fseek($fp, 4)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===GETC===\n"; + var_dump(fgetc($fp)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===GETC===\n"; + var_dump(fgetc($fp)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===REWIND===\n"; + var_dump(rewind($fp)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===GETC===\n"; + var_dump(fgetc($fp)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:3,S===\n"; + var_dump(fseek($fp, 3, SEEK_SET)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:1,C===\n"; + var_dump(fseek($fp, 1, SEEK_CUR)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:-2,C===\n"; + var_dump(fseek($fp, -2, SEEK_CUR)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:-10,C===\n"; + var_dump(fseek($fp, -10, SEEK_CUR)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:3,S===\n"; + var_dump(fseek($fp, 3, SEEK_SET)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:10,C===\n"; + var_dump(fseek($fp, 10, SEEK_CUR)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:-1,E===\n"; + var_dump(fseek($fp, -1, SEEK_END)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:0,E===\n"; + var_dump(fseek($fp, 0, SEEK_END)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + echo "===S:1,E===\n"; + var_dump(fseek($fp, 1, SEEK_END)); + var_dump(ftell($fp)); + var_dump(feof($fp)); + + fclose($fp); +} + +?> +===DONE=== +<?php exit(0); ?> +--EXPECTF-- +===data:,012345=== +int(0) +bool(false) +===S:4,S=== +int(0) +int(4) +bool(false) +===GETC=== +string(1) "4" +int(5) +bool(false) +===GETC=== +string(1) "5" +int(6) +bool(true) +===REWIND=== +bool(true) +int(0) +bool(false) +===GETC=== +string(1) "0" +int(1) +bool(false) +===S:3,S=== +int(0) +int(3) +bool(false) +===S:1,C=== +int(0) +int(4) +bool(false) +===S:-2,C=== +int(0) +int(2) +bool(false) +===S:-10,C=== +int(-1) +bool(false) +bool(false) +===S:3,S=== +int(0) +int(3) +bool(false) +===S:10,C=== +int(-1) +bool(false) +bool(false) +===S:-1,E=== +int(0) +int(5) +bool(false) +===S:0,E=== +int(0) +int(6) +bool(false) +===S:1,E=== +int(-1) +bool(false) +bool(false) +===DONE=== diff --git a/ext/standard/tests/filters/001.phpt b/ext/standard/tests/filters/001.phpt new file mode 100644 index 000000000..afbcdcfdd --- /dev/null +++ b/ext/standard/tests/filters/001.phpt @@ -0,0 +1,31 @@ +--TEST-- +stream_filter_register() and invalid arguments +--FILE-- +<?php + +var_dump(stream_filter_register("", "")); +var_dump(stream_filter_register("test", "")); +var_dump(stream_filter_register("", "test")); +var_dump(stream_filter_register("------", "nonexistentclass")); +var_dump(stream_filter_register(array(), "aa")); +var_dump(stream_filter_register("", array())); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d +bool(false) + +Warning: stream_filter_register(): Class name cannot be empty in %s on line %d +bool(false) + +Warning: stream_filter_register(): Filter name cannot be empty in %s on line %d +bool(false) +bool(true) + +Warning: stream_filter_register() expects parameter 1 to be string, array given in %s on line %d +bool(false) + +Warning: stream_filter_register() expects parameter 2 to be string, array given in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/filters/php_user_filter_01.phpt b/ext/standard/tests/filters/php_user_filter_01.phpt new file mode 100644 index 000000000..534b9abf3 --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_01.phpt @@ -0,0 +1,17 @@ +--TEST-- +class php_user_filter#1 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, &$consumed, $closing) {} + function onCreate() {} + function onClose() {} +} +class bar extends php_user_filter { + function filter($in, $out, &$consumed) {} + function onCreate() {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of bar::filter() should be compatible with that of php_user_filter::filter() in %s on line %d diff --git a/ext/standard/tests/filters/php_user_filter_02.phpt b/ext/standard/tests/filters/php_user_filter_02.phpt new file mode 100644 index 000000000..73a1f0267 --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_02.phpt @@ -0,0 +1,12 @@ +--TEST-- +class php_user_filter#2 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, $consumed, $closing) {} + function onCreate() {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of foo::filter() should be compatible with that of php_user_filter::filter() in %s on line %d diff --git a/ext/standard/tests/filters/php_user_filter_03.phpt b/ext/standard/tests/filters/php_user_filter_03.phpt new file mode 100644 index 000000000..5962951ee --- /dev/null +++ b/ext/standard/tests/filters/php_user_filter_03.phpt @@ -0,0 +1,12 @@ +--TEST-- +class php_user_filter#3 +--FILE-- +<?php +class foo extends php_user_filter { + function filter($in, $out, &$consumed, $closing) {} + function onCreate($var) {} + function onClose() {} +} +?> +--EXPECTF-- +Strict Standards: Declaration of foo::onCreate() should be compatible with that of php_user_filter::onCreate() in %s on line %d diff --git a/ext/standard/tests/general_functions/010.phpt b/ext/standard/tests/general_functions/010.phpt new file mode 100644 index 000000000..8d1075f84 --- /dev/null +++ b/ext/standard/tests/general_functions/010.phpt @@ -0,0 +1,25 @@ +--TEST-- +register_shutdown_function() & __call +--FILE-- +<?php +class test { + function _foo() { + throw new Exception('test'); + } + function __call($name=null, $args=null) { + return test::_foo(); + } +} + +var_dump(register_shutdown_function(array("test","__call"))); + +echo "Done\n"; +?> +--EXPECTF-- +Strict Standards: Non-static method test::__call() cannot be called statically in %s on line %d +NULL +Done + +Strict Standards: Non-static method test::__call() cannot be called statically in Unknown on line 0 + +Fatal error: Non-static method test::__call() cannot be called statically in Unknown on line 0 diff --git a/ext/standard/tests/general_functions/sunfuncts.phpt b/ext/standard/tests/general_functions/sunfuncts.phpt index 8d32e7171..4d95c59ec 100644 --- a/ext/standard/tests/general_functions/sunfuncts.phpt +++ b/ext/standard/tests/general_functions/sunfuncts.phpt @@ -17,28 +17,28 @@ for($a=1;$a<=12;$a++){ echo date_sunset(mktime(1,1,1,$a,1,2003),SUNFUNCS_RET_DOUBLE,31.76670,35.23330,90.83,2)."\n"; } ?> ---EXPECT-- -1041395864 06:37 6.629013145891 -1041432452 16:47 16.79245111439 -1044073855 06:30 6.515408927982 -1044112463 17:14 17.23987028904 -1046491495 06:04 6.082214503336 -1046533075 17:37 17.63201103534 -1049167581 05:26 5.439443811173 -1049212774 17:59 17.99303572948 -1051757532 04:52 4.870193412616 -1051806007 18:20 18.33539050867 -1054434776 04:32 4.548982718277 -1054485647 18:40 18.67981294906 -1057026949 04:35 4.597195637274 -1057078197 18:49 18.83256339675 -1059706409 04:53 4.891657508917 -1059755837 18:37 18.62144070428 -1062385999 05:13 5.222095112101 -1062432291 18:04 18.08095716848 -1064979098 05:31 5.527319921542 -1065021952 17:25 17.43133913592 -1067658845 05:54 5.901629287095 -1067698274 16:51 16.85390245352 -1070252387 06:19 6.329924268936 -1070289382 16:36 16.60631260094 +--EXPECTF-- +1041395864 06:37 6.6290131458%d +1041432452 16:47 16.792451114%d +1044073855 06:30 6.5154089279%d +1044112463 17:14 17.239870289%d +1046491495 06:04 6.0822145033%d +1046533075 17:37 17.632011035%d +1049167581 05:26 5.4394438111%d +1049212774 17:59 17.993035729%d +1051757532 04:52 4.8701934126%d +1051806007 18:20 18.335390508%d +1054434776 04:32 4.5489827182%d +1054485647 18:40 18.679812949%d +1057026949 04:35 4.5971956372%d +1057078197 18:49 18.832563396%d +1059706409 04:53 4.8916575089%d +1059755837 18:37 18.621440704%d +1062385999 05:13 5.2220951121%d +1062432291 18:04 18.080957168%d +1064979098 05:31 5.5273199215%d +1065021952 17:25 17.431339135%d +1067658845 05:54 5.9016292870%d +1067698274 16:51 16.853902453%d +1070252387 06:19 6.3299242689%d +1070289382 16:36 16.606312600%d diff --git a/ext/standard/tests/image/image_type_to_extension.phpt b/ext/standard/tests/image/image_type_to_extension.phpt new file mode 100644 index 000000000..31bcfd612 --- /dev/null +++ b/ext/standard/tests/image/image_type_to_extension.phpt @@ -0,0 +1,103 @@ +--TEST-- +image_type_to_extension() +--SKIPIF-- +<?php + if (!function_exists('image_type_to_extension')) die('skip image_type_to_extension() not available'); + require_once('skipif_imagetype.inc'); +?> +--FILE-- +<?php + $constants = array( + "IMAGETYPE_GIF" => IMAGETYPE_GIF, + "IMAGETYPE_JPEG" => IMAGETYPE_JPEG, + "IMAGETYPE_PNG" => IMAGETYPE_PNG, + "IMAGETYPE_SWF" => IMAGETYPE_SWF, + "IMAGETYPE_PSD" => IMAGETYPE_PSD, + "IMAGETYPE_BMP" => IMAGETYPE_BMP, + "IMAGETYPE_TIFF_II" => IMAGETYPE_TIFF_II, + "IMAGETYPE_TIFF_MM" => IMAGETYPE_TIFF_MM, + "IMAGETYPE_JPC" => IMAGETYPE_JPC, + "IMAGETYPE_JP2" => IMAGETYPE_JP2, + "IMAGETYPE_JPX" => IMAGETYPE_JPX, + "IMAGETYPE_JB2" => IMAGETYPE_JB2, + "IMAGETYPE_IFF" => IMAGETYPE_IFF, + "IMAGETYPE_WBMP" => IMAGETYPE_WBMP, + "IMAGETYPE_JPEG2000" => IMAGETYPE_JPEG2000, + "IMAGETYPE_XBM" => IMAGETYPE_XBM + ); + foreach($constants as $name => $constant) { + printf("Constant: %s\n\tWith dot: %s\n\tWithout dot: %s\n", $name, image_type_to_extension($constant), image_type_to_extension($constant, false)); + } + + var_dump(image_type_to_extension(-1, array())); + var_dump(image_type_to_extension(new stdclass)); + var_dump(image_type_to_extension(1000000, NULL)); + var_dump(image_type_to_extension()); + var_dump(image_type_to_extension(0)); + var_dump(image_type_to_extension(0, 0, 0)); +?> +Done +--EXPECTF-- +Constant: IMAGETYPE_GIF + With dot: .gif + Without dot: gif +Constant: IMAGETYPE_JPEG + With dot: .jpeg + Without dot: jpeg +Constant: IMAGETYPE_PNG + With dot: .png + Without dot: png +Constant: IMAGETYPE_SWF + With dot: .swf + Without dot: swf +Constant: IMAGETYPE_PSD + With dot: .psd + Without dot: psd +Constant: IMAGETYPE_BMP + With dot: .bmp + Without dot: bmp +Constant: IMAGETYPE_TIFF_II + With dot: .tiff + Without dot: tiff +Constant: IMAGETYPE_TIFF_MM + With dot: .tiff + Without dot: tiff +Constant: IMAGETYPE_JPC + With dot: .jpc + Without dot: jpc +Constant: IMAGETYPE_JP2 + With dot: .jp2 + Without dot: jp2 +Constant: IMAGETYPE_JPX + With dot: .jpx + Without dot: jpx +Constant: IMAGETYPE_JB2 + With dot: .jb2 + Without dot: jb2 +Constant: IMAGETYPE_IFF + With dot: .iff + Without dot: iff +Constant: IMAGETYPE_WBMP + With dot: .bmp + Without dot: bmp +Constant: IMAGETYPE_JPEG2000 + With dot: .jpc + Without dot: jpc +Constant: IMAGETYPE_XBM + With dot: .xbm + Without dot: xbm + +Warning: image_type_to_extension() expects parameter 2 to be boolean, array given in %s on line %d +bool(false) + +Warning: image_type_to_extension() expects parameter 1 to be long, object given in %s on line %d +bool(false) +bool(false) + +Warning: image_type_to_extension() expects at least 1 parameter, 0 given in %s on line %d +bool(false) +bool(false) + +Warning: image_type_to_extension() expects at most 2 parameters, 3 given in %s on line %d +bool(false) +Done diff --git a/ext/standard/tests/math/constants.phpt b/ext/standard/tests/math/constants.phpt new file mode 100644 index 000000000..7b5110f53 --- /dev/null +++ b/ext/standard/tests/math/constants.phpt @@ -0,0 +1,46 @@ +--TEST-- +Math constants +--FILE-- +<?php +$constants = array( + "M_E", + "M_LOG2E", + "M_LOG10E", + "M_LN2", + "M_LN10", + "M_PI", + "M_PI_2", + "M_PI_4", + "M_1_PI", + "M_2_PI", + "M_SQRTPI", + "M_2_SQRTPI", + "M_LNPI", + "M_EULER", + "M_SQRT2", + "M_SQRT1_2", + "M_SQRT3" +); +foreach($constants as $constant) { + printf("%-10s: %s\n", $constant, constant($constant)); +} +?> +--EXPECTREGEX-- +M_E : 2.718281[0-9]* +M_LOG2E : 1.442695[0-9]* +M_LOG10E : 0.434294[0-9]* +M_LN2 : 0.693147[0-9]* +M_LN10 : 2.302585[0-9]* +M_PI : 3.141592[0-9]* +M_PI_2 : 1.570796[0-9]* +M_PI_4 : 0.785398[0-9]* +M_1_PI : 0.318309[0-9]* +M_2_PI : 0.636619[0-9]* +M_SQRTPI : 1.772453[0-9]* +M_2_SQRTPI: 1.128379[0-9]* +M_LNPI : 1.144729[0-9]* +M_EULER : 0.577215[0-9]* +M_SQRT2 : 1.414213[0-9]* +M_SQRT1_2 : 0.707106[0-9]* +M_SQRT3 : 1.732050[0-9]* + diff --git a/ext/standard/tests/serialize/bug37947.phpt b/ext/standard/tests/serialize/bug37947.phpt new file mode 100755 index 000000000..89641635c --- /dev/null +++ b/ext/standard/tests/serialize/bug37947.phpt @@ -0,0 +1,21 @@ +--TEST--
+Bug #37947 (zend_ptr_stack reallocation problem)
+--INI--
+error_reporting=0
+--FILE--
+<?php
+class test {
+ function extend_zend_ptr_stack($count,$a,$b,$c,$d,$e) {
+ if ($count>0) $this->extend_zend_ptr_stack($count -
+1,$a,$b,$c,$d,$e);
+ }
+
+ function __wakeup() {
+ $this->extend_zend_ptr_stack(10,'a','b','c','d','e');
+ }
+}
+
+$str='a:2:{i:0;O:4:"test":0:{}junk';
+var_dump(unserialize($str));
+--EXPECT--
+bool(false)
diff --git a/ext/standard/tests/strings/bug22224.phpt b/ext/standard/tests/strings/bug22224.phpt index d64fc0acf..c30f222f3 100644 --- a/ext/standard/tests/strings/bug22224.phpt +++ b/ext/standard/tests/strings/bug22224.phpt @@ -4,7 +4,12 @@ Bug #22224 (implode changes object references in array) error_reporting=0 --FILE-- <?php -class foo { +class foo +{ + function __toString() + { + return "Object"; + } } diff --git a/ext/standard/tests/strings/bug24098.phpt b/ext/standard/tests/strings/bug24098.phpt index 9ff51a420..1998d9ed0 100644 --- a/ext/standard/tests/strings/bug24098.phpt +++ b/ext/standard/tests/strings/bug24098.phpt @@ -7,11 +7,13 @@ Bug #24098 (pathinfo() crash) var_dump(pathinfo("/dsds.asa")); ?> --EXPECT-- -array(3) { +array(4) { ["dirname"]=> string(1) "/" ["basename"]=> string(8) "dsds.asa" ["extension"]=> string(3) "asa" + ["filename"]=> + string(4) "dsds" } diff --git a/ext/standard/tests/strings/bug29538.phpt b/ext/standard/tests/strings/bug29538.phpt new file mode 100644 index 000000000..6af25fb89 --- /dev/null +++ b/ext/standard/tests/strings/bug29538.phpt @@ -0,0 +1,10 @@ +--TEST-- +Bug #29538 (number_format and problem with 0) +--FILE-- +<?php + echo number_format(0.25, 2, '', ''), "\n"; + echo number_format(1234, 2, '', ','); +?> +--EXPECT-- +025 +1,23400 diff --git a/ext/standard/tests/strings/bug37244.phpt b/ext/standard/tests/strings/bug37244.phpt new file mode 100644 index 000000000..0718c8a4d --- /dev/null +++ b/ext/standard/tests/strings/bug37244.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #37244 (base64_decode violates RFC 3548) +--FILE-- +<?php +$strings = array( + 'SW1wbGVtZW50YXRpb25zIE1VU1QgcmVqZWN0IHRoZSBlbmNvZGluZyBpZiBpdCBjb250YWlucyBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2UgYWxwaGFiZXQu', + 'SW1wbGVtZW$0YXRpb25zIE1VU1QgcmVqZWN0IHRoZSBlbmNvZGluZyBpZiBpdCBjb250YWlucyBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2UgYWxwaGFiZXQu', + 'SW1wbGVtZW0YXRpb25zIE1VU1QgcmVqZWN0IHRoZSBlbmNvZGluZyBpZiBpdCBjb250YWlucyBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2UgYWxwaGFiZXQu' +); +foreach($strings as $string) { + var_dump(base64_decode($string, true)); +} +?> +--EXPECT-- +string(93) "Implementations MUST reject the encoding if it contains characters outside the base alphabet." +bool(false) +string(92) "Implemem][ۜUTZXH[[Y]Z[\X\]YHH\H[X]" + diff --git a/ext/standard/tests/strings/bug37262.phpt b/ext/standard/tests/strings/bug37262.phpt new file mode 100644 index 000000000..474251a81 --- /dev/null +++ b/ext/standard/tests/strings/bug37262.phpt @@ -0,0 +1,9 @@ +--TEST-- +Bug #37262 (var_export() does not escape \0 character) +--FILE-- +<?php +$func = create_function('$a', 'return $a;'); +var_export($func); +?> +--EXPECT-- +'\000lambda_1' diff --git a/ext/standard/tests/strings/bug38322.phpt b/ext/standard/tests/strings/bug38322.phpt new file mode 100644 index 000000000..37f5a93f6 --- /dev/null +++ b/ext/standard/tests/strings/bug38322.phpt @@ -0,0 +1,13 @@ +--TEST-- +Bug #38322 (reading past array in sscanf() leads to segfault/arbitary code execution) +--FILE-- +<?php + +$str = "a b c d e"; +var_dump(sscanf("a ",'%1$s',$str)); + +echo "Done\n"; +?> +--EXPECTF-- +int(1) +Done diff --git a/ext/standard/tests/strings/bug39032.phpt b/ext/standard/tests/strings/bug39032.phpt new file mode 100644 index 000000000..dbd39ec9d --- /dev/null +++ b/ext/standard/tests/strings/bug39032.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #39032 (strcspn() stops on null character) +--FILE-- +<?php + +var_dump(strcspn(chr(0),"x")); +var_dump(strcspn(chr(0),"")); +var_dump(strcspn(chr(0),"qweqwe")); +var_dump(strcspn(chr(1),"qweqwe")); + +echo "Done\n"; +?> +--EXPECTF-- +int(1) +int(0) +int(1) +int(1) +Done diff --git a/ext/standard/tests/strings/explode.phpt b/ext/standard/tests/strings/explode.phpt index 1198a09a9..defb79c22 100644 --- a/ext/standard/tests/strings/explode.phpt +++ b/ext/standard/tests/strings/explode.phpt @@ -29,7 +29,7 @@ var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-1)); var_dump(explode(":^:","a lazy dog:^:jumps::over:^:",-2)); ?> --EXPECTF-- -26d4e18734cb2582df5055e2175223df +6e5d59d5afd6693547a733219d079658 bool(false) bool(false) bool(false) diff --git a/ext/standard/tests/strings/htmlentities15.phpt b/ext/standard/tests/strings/htmlentities15.phpt index a0e534aba..2dc36e6f7 100644 --- a/ext/standard/tests/strings/htmlentities15.phpt +++ b/ext/standard/tests/strings/htmlentities15.phpt @@ -6,14 +6,14 @@ default_charset= mbstring.internal_encoding=none --SKIPIF-- <?php -$result = (bool)setlocale(LC_CTYPE, "ru_RU.koi8r"); +$result = (bool)setlocale(LC_CTYPE, "ru_RU.koi8r", "ru_RU.KOI8-R"); if (!$result || preg_match('/koi8/i', setlocale(LC_CTYPE, 0)) == 0) { die("skip setlocale() failed\n"); } ?> --FILE-- <?php -setlocale(LC_CTYPE, "ru_RU.koi8r"); +setlocale(LC_CTYPE, "ru_RU.koi8r", "ru_RU.KOI8-R"); $str = ""; var_dump($str, htmlentities($str, ENT_QUOTES, '')); ?> diff --git a/ext/standard/tests/strings/implode1.phpt b/ext/standard/tests/strings/implode1.phpt new file mode 100644 index 000000000..1582c2516 --- /dev/null +++ b/ext/standard/tests/strings/implode1.phpt @@ -0,0 +1,59 @@ +--TEST-- +implode() and various args +--FILE-- +<?php + +$a = array( + array(1,2), + array(1.1,2.2), + array(array(2),array(1)), + array(false,true), + ); + +foreach ($a as $val) { + var_dump(implode(', ', $val)); + var_dump($val); +} + +echo "Done\n"; +?> +--EXPECTF-- +string(4) "1, 2" +array(2) { + [0]=> + int(1) + [1]=> + int(2) +} +string(8) "1.1, 2.2" +array(2) { + [0]=> + float(1.1) + [1]=> + float(2.2) +} + +Notice: Array to string conversion in %s on line %d + +Notice: Array to string conversion in %s on line %d +string(12) "Array, Array" +array(2) { + [0]=> + array(1) { + [0]=> + int(2) + } + [1]=> + array(1) { + [0]=> + int(1) + } +} +string(3) ", 1" +array(2) { + [0]=> + bool(false) + [1]=> + bool(true) +} +Done diff --git a/ext/standard/tests/strings/pathinfo.phpt b/ext/standard/tests/strings/pathinfo.phpt new file mode 100644 index 000000000..c1d58f05b --- /dev/null +++ b/ext/standard/tests/strings/pathinfo.phpt @@ -0,0 +1,108 @@ +--TEST-- +pathinfo() tests +--FILE-- +<?php + +var_dump(pathinfo()); +var_dump(pathinfo("")); +var_dump(pathinfo(".")); +var_dump(pathinfo("..")); +var_dump(pathinfo("/")); +var_dump(pathinfo("./")); +var_dump(pathinfo("/.")); +var_dump(pathinfo(".cvsignore")); +var_dump(pathinfo(__FILE__, PATHINFO_BASENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_FILENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION)); +var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME)); +var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_DIRNAME)); +var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME|PATHINFO_BASENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_FILENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_EXTENSION|PATHINFO_BASENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_FILENAME|PATHINFO_DIRNAME)); +var_dump(pathinfo(__FILE__, PATHINFO_FILENAME|PATHINFO_BASENAME)); +var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_EXTENSION)); +var_dump(pathinfo(__FILE__, PATHINFO_DIRNAME|PATHINFO_BASENAME)); + +echo "Done\n"; +?> +--EXPECTF-- +Warning: pathinfo() expects at least 1 parameter, 0 given in %s on line %d +NULL +array(2) { + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(2) ".." + ["extension"]=> + string(0) "" + ["filename"]=> + string(1) "." +} +array(3) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "/" + ["basename"]=> + string(1) "." + ["extension"]=> + string(0) "" + ["filename"]=> + string(0) "" +} +array(4) { + ["dirname"]=> + string(1) "." + ["basename"]=> + string(10) ".cvsignore" + ["extension"]=> + string(9) "cvsignore" + ["filename"]=> + string(0) "" +} +string(12) "pathinfo.php" +string(8) "pathinfo" +string(3) "php" +string(%d) "%s/strings" +string(%d) "%s/strings" +string(12) "pathinfo.php" +string(3) "php" +string(12) "pathinfo.php" +string(%d) "%s/strings" +string(12) "pathinfo.php" +string(%d) "%s/strings" +string(%d) "%s/strings" +Done diff --git a/ext/standard/tests/strings/str_replace.phpt b/ext/standard/tests/strings/str_replace.phpt new file mode 100644 index 000000000..46d732a69 --- /dev/null +++ b/ext/standard/tests/strings/str_replace.phpt @@ -0,0 +1,108 @@ +--TEST-- +str_replace() tests +--FILE-- +<?php + +var_dump(str_replace("", "", "")); + +var_dump(str_replace("e", "b", "test")); + +var_dump(str_replace("", "", "", $count)); +var_dump($count); + +var_dump(str_replace("q", "q", "q", $count)); +var_dump($count); + +var_dump(str_replace("long string here", "", "", $count)); +var_dump($count); + +var_dump(str_replace(chr(0), "a", "", $count)); +var_dump($count); + +var_dump(str_replace(chr(0), "a", chr(0), $count)); +var_dump($count); + +var_dump(str_replace("multi", "a", "aaa", $count)); +var_dump($count); + +var_dump(str_replace("a", "multi", "aaa", $count)); +var_dump($count); + +var_dump(str_replace(array("a", "a", "b"), "multi", "aaa", $count)); +var_dump($count); + +var_dump(str_replace(array("a", "a", "b"), array("q", "q", "c"), "aaa", $count)); +var_dump($count); + +var_dump(str_replace(array("a", "a", "b"), array("q", "q", "c"), array("aaa", "bbb"), $count)); +var_dump($count); + +var_dump(str_replace("a", array("q", "q", "c"), array("aaa", "bbb"), $count)); +var_dump($count); + +var_dump(str_replace("a", 1, array("aaa", "bbb"), $count)); +var_dump($count); + +var_dump(str_replace(1, 3, array("aaa1", "2bbb"), $count)); +var_dump($count); + +$fp = fopen(__FILE__, "r"); +var_dump(str_replace($fp, $fp, $fp, $fp)); +var_dump($fp); + +echo "Done\n"; +?> +--EXPECTF-- +string(0) "" +string(4) "tbst" +string(0) "" +int(0) +string(1) "q" +int(1) +string(0) "" +int(0) +string(0) "" +int(0) +string(1) "a" +int(1) +string(3) "aaa" +int(0) +string(15) "multimultimulti" +int(3) +string(15) "multimultimulti" +int(3) +string(3) "qqq" +int(3) +array(2) { + [0]=> + string(3) "qqq" + [1]=> + string(3) "ccc" +} +int(6) + +Notice: Array to string conversion in %s on line %d +array(2) { + [0]=> + string(15) "ArrayArrayArray" + [1]=> + string(3) "bbb" +} +int(3) +array(2) { + [0]=> + string(3) "111" + [1]=> + string(3) "bbb" +} +int(3) +array(2) { + [0]=> + string(4) "aaa3" + [1]=> + string(4) "2bbb" +} +int(1) +string(%d) "Resource id #%d" +int(1) +Done diff --git a/ext/standard/tests/strings/str_word_count.phpt b/ext/standard/tests/strings/str_word_count.phpt index 9d41fc147..11e1bb65e 100644 --- a/ext/standard/tests/strings/str_word_count.phpt +++ b/ext/standard/tests/strings/str_word_count.phpt @@ -12,7 +12,7 @@ var_dump(str_word_count($str)); var_dump(str_word_count($str, 3)); var_dump(str_word_count($str, 123)); var_dump(str_word_count($str, -1)); -var_dump(str_word_count($str, 99999999999999999)); +var_dump(str_word_count($str, 999999999)); var_dump(str_word_count($str, array())); var_dump(str_word_count($str, $b)); var_dump($str); @@ -41,6 +41,8 @@ var_dump(str_word_count("'foo'", 2)); var_dump(str_word_count("'foo'", 2, "'")); var_dump(str_word_count("-foo-", 2)); var_dump(str_word_count("-foo-", 2, "-")); + +echo "Done\n"; ?> --EXPECTF-- array(6) { @@ -72,19 +74,23 @@ array(6) { string(5) "today" } int(6) -NULL -NULL -NULL -NULL -Warning: str_word_count() expects parameter 2 to be long, array given in %s on line 13 +Warning: str_word_count(): Invalid format value 3 in %s on line %d +bool(false) -Warning: Wrong parameter count for str_word_count() in %s on line 13 -NULL +Warning: str_word_count(): Invalid format value 123 in %s on line %d +bool(false) -Warning: str_word_count() expects parameter 2 to be long, string given in %s on line 14 +Warning: str_word_count(): Invalid format value -1 in %s on line %d +bool(false) -Warning: Wrong parameter count for str_word_count() in %s on line 14 +Warning: str_word_count(): Invalid format value 999999999 in %s on line %d +bool(false) + +Warning: str_word_count() expects parameter 2 to be long, array given in %s on line %d +NULL + +Warning: str_word_count() expects parameter 2 to be long, string given in %s on line %d NULL string(55) "Hello friend, you're looking good today!" @@ -92,14 +98,10 @@ int(5) int(6) int(5) -Warning: str_word_count() expects parameter 3 to be string, array given in %s on line 21 - -Warning: Wrong parameter count for str_word_count() in %s on line 21 +Warning: str_word_count() expects parameter 3 to be string, array given in %s on line %d NULL -Warning: str_word_count() expects parameter 3 to be string, object given in %s on line 22 - -Warning: Wrong parameter count for str_word_count() in %s on line 22 +Warning: str_word_count() expects parameter 3 to be string, object given in %s on line %d NULL int(7) array(5) { @@ -141,14 +143,10 @@ array(5) { string(3) "foo" } -Warning: str_word_count() expects parameter 3 to be string, array given in %s on line 27 - -Warning: Wrong parameter count for str_word_count() in %s on line 27 +Warning: str_word_count() expects parameter 3 to be string, array given in %s on line %d NULL -Warning: str_word_count() expects parameter 3 to be string, object given in %s on line 28 - -Warning: Wrong parameter count for str_word_count() in %s on line 28 +Warning: str_word_count() expects parameter 3 to be string, object given in %s on line %d NULL array(7) { [0]=> @@ -205,14 +203,10 @@ array(5) { string(3) "foo" } -Warning: str_word_count() expects parameter 3 to be string, array given in %s on line 33 - -Warning: Wrong parameter count for str_word_count() in %s on line 33 +Warning: str_word_count() expects parameter 3 to be string, array given in %s on line %d NULL -Warning: str_word_count() expects parameter 3 to be string, object given in %s on line 34 - -Warning: Wrong parameter count for str_word_count() in %s on line 34 +Warning: str_word_count() expects parameter 3 to be string, object given in %s on line %d NULL array(7) { [0]=> @@ -252,3 +246,4 @@ array(1) { [0]=> string(5) "-foo-" } +Done diff --git a/ext/standard/tests/strings/str_word_count1.phpt b/ext/standard/tests/strings/str_word_count1.phpt new file mode 100644 index 000000000..5f49fcfbf --- /dev/null +++ b/ext/standard/tests/strings/str_word_count1.phpt @@ -0,0 +1,26 @@ +--TEST-- +str_word_count() and invalid arguments +--FILE-- +<?php + +var_dump(str_word_count("")); +var_dump(str_word_count("", -1)); +var_dump(str_word_count("", -1, $a)); +var_dump($a); + +echo "Done\n"; +?> +--EXPECTF-- +int(0) + +Warning: str_word_count(): Invalid format value -1 in %s on line %d +bool(false) + +Notice: Undefined variable: a in %s on line %d + +Warning: str_word_count(): Invalid format value -1 in %s on line %d +bool(false) + +Notice: Undefined variable: a in %s on line %d +NULL +Done diff --git a/ext/standard/tests/strings/strings001.phpt b/ext/standard/tests/strings/strings001.phpt index 87f8489b8..70b709295 100644 --- a/ext/standard/tests/strings/strings001.phpt +++ b/ext/standard/tests/strings/strings001.phpt @@ -9,4 +9,4 @@ var_dump(strrchr($s," nic")); ?> --EXPECTREGEX-- string\(18\) \"nica\x00turska panica\" -string\(19\) \" nica\x00turska panica\" +string\(7\) \" panica\" diff --git a/ext/standard/tests/strings/stripos.phpt b/ext/standard/tests/strings/stripos.phpt new file mode 100644 index 000000000..ef0efe5b2 --- /dev/null +++ b/ext/standard/tests/strings/stripos.phpt @@ -0,0 +1,55 @@ +--TEST-- +stripos() function test +--FILE-- +<?php + var_dump(stripos("test string", "TEST")); + var_dump(stripos("test string", "strIng")); + var_dump(stripos("test string", "stRin")); + var_dump(stripos("test string", "t S")); + var_dump(stripos("test string", "G")); + var_dump(stripos("te".chr(0)."st", chr(0))); + var_dump(stripos("tEst", "test")); + var_dump(stripos("teSt", "test")); + var_dump(stripos("", "")); + var_dump(stripos("a", "")); + var_dump(stripos("", "a")); + var_dump(stripos("a", " ")); + var_dump(stripos("a", "a")); + var_dump(stripos("", 1)); + var_dump(stripos("", false)); + var_dump(stripos("", true)); + var_dump(stripos("a", 1)); + var_dump(stripos("a", false)); + var_dump(stripos("a", true)); + var_dump(stripos("1", 1)); + var_dump(stripos("0", false)); + var_dump(stripos("1", true)); + var_dump(stripos("\\\\a", "\\a")); + + echo "Done\n"; +?> +--EXPECT-- +int(0) +int(5) +int(5) +int(3) +int(10) +int(2) +int(0) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +int(0) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +bool(false) +int(1) +Done diff --git a/ext/standard/tests/strings/strrchr.phpt b/ext/standard/tests/strings/strrchr.phpt new file mode 100644 index 000000000..5a1fe12a8 --- /dev/null +++ b/ext/standard/tests/strings/strrchr.phpt @@ -0,0 +1,22 @@ +--TEST-- +strrchr() tests +--FILE-- +<?php + +var_dump(strrchr("", "")); +var_dump(strrchr("abc", "")); +var_dump(strrchr("", "abc")); +var_dump(strrchr("abc", "abc")); +var_dump(strrchr("test ".chr(0)." test", " ")); +var_dump(strrchr("test".chr(0)."string", "t")); + +echo "Done\n"; +?> +--EXPECTF-- +bool(false) +bool(false) +bool(false) +string(3) "abc" +string(5) " test" +string(5) "tring" +Done diff --git a/ext/standard/tests/strings/url_t.phpt b/ext/standard/tests/strings/url_t.phpt index 2d18fa5c0..e0e541103 100644 --- a/ext/standard/tests/strings/url_t.phpt +++ b/ext/standard/tests/strings/url_t.phpt @@ -71,6 +71,7 @@ $sample_urls = array ( 'scheme:', 'foo+bar://baz@bang/bla', 'gg:9130731', +'http://user:@pass@host/path?argument?value#etc', ); foreach ($sample_urls as $url) { @@ -525,11 +526,11 @@ array(7) { ["scheme"]=> string(4) "http" ["host"]=> - string(19) "hideout@www.php.net" + string(11) "www.php.net" ["port"]=> int(80) ["user"]=> - string(6) "secret" + string(14) "secret@hideout" ["path"]=> string(10) "/index.php" ["query"]=> @@ -685,6 +686,22 @@ array(2) { ["path"]=> string(7) "9130731" } +array(7) { + ["scheme"]=> + string(4) "http" + ["host"]=> + string(4) "host" + ["user"]=> + string(4) "user" + ["pass"]=> + string(5) "@pass" + ["path"]=> + string(5) "/path" + ["query"]=> + string(14) "argument?value" + ["fragment"]=> + string(3) "etc" +} string(4) "http" string(11) "www.php.net" int(80) diff --git a/ext/standard/tests/time/bug38524.phpt b/ext/standard/tests/time/bug38524.phpt new file mode 100755 index 000000000..e9ccaaf38 --- /dev/null +++ b/ext/standard/tests/time/bug38524.phpt @@ -0,0 +1,29 @@ +--TEST-- +Bug #38524 (strptime() does not initialize the internal date storage structure) +--FILE-- +<?php + var_dump(strptime('2006-08-20', '%Y-%m-%d')); +?> +===DONE=== +--EXPECTF-- +array(9) { + ["tm_sec"]=> + int(0) + ["tm_min"]=> + int(0) + ["tm_hour"]=> + int(0) + ["tm_mday"]=> + int(20) + ["tm_mon"]=> + int(7) + ["tm_year"]=> + int(106) + ["tm_wday"]=> + int(0) + ["tm_yday"]=> + int(%d) + ["unparsed"]=> + string(0) "" +} +===DONE=== |
