summaryrefslogtreecommitdiff
path: root/ext/standard/tests
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/tests')
-rw-r--r--ext/standard/tests/array/007.phpt58
-rw-r--r--ext/standard/tests/array/array_fill.phpt366
-rwxr-xr-xext/standard/tests/array/array_fill_keys.phpt42
-rw-r--r--ext/standard/tests/array/array_filter.phpt93
-rw-r--r--ext/standard/tests/array/array_flip.phpt37
-rw-r--r--ext/standard/tests/array/array_intersect_1.phpt127
-rw-r--r--ext/standard/tests/array/array_search1.phpt35
-rw-r--r--ext/standard/tests/array/array_walk.phpt48
-rw-r--r--ext/standard/tests/array/array_walk_objects.phptbin0 -> 785 bytes
-rw-r--r--ext/standard/tests/array/array_walk_rec_objects.phptbin0 -> 845 bytes
-rw-r--r--ext/standard/tests/array/array_walk_recursive1.phpt54
-rw-r--r--ext/standard/tests/array/bug30833.phpt2
-rw-r--r--ext/standard/tests/array/bug34066.phpt804
-rw-r--r--ext/standard/tests/array/bug34066_1.phpt731
-rw-r--r--ext/standard/tests/array/bug38464.phpt20
-rw-r--r--ext/standard/tests/array/max.phpt39
-rw-r--r--ext/standard/tests/array/min.phpt39
-rw-r--r--ext/standard/tests/assert/assert02.phpt42
-rw-r--r--ext/standard/tests/file/bug22414.phpt1
-rw-r--r--ext/standard/tests/file/bug24313.phpt6
-rw-r--r--ext/standard/tests/file/bug37864.phpt12
-rw-r--r--ext/standard/tests/file/bug38086.phpt46
-rw-r--r--ext/standard/tests/file/bug38086.txt5
-rw-r--r--ext/standard/tests/file/bug38450.phpt114
-rw-r--r--ext/standard/tests/file/bug38450_1.phpt114
-rw-r--r--ext/standard/tests/file/bug38450_2.phpt114
-rw-r--r--ext/standard/tests/file/bug38450_3.phpt105
-rw-r--r--ext/standard/tests/file/file_put_contents.phpt28
-rw-r--r--ext/standard/tests/file/mkdir-001.phpt36
-rw-r--r--ext/standard/tests/file/mkdir-002.phpt49
-rw-r--r--ext/standard/tests/file/mkdir-003.phpt30
-rw-r--r--ext/standard/tests/file/mkdir-004.phpt24
-rw-r--r--ext/standard/tests/file/mkdir-005.phpt25
-rw-r--r--ext/standard/tests/file/mkdir-006.phpt26
-rw-r--r--ext/standard/tests/file/stream_001.phpt24
-rw-r--r--ext/standard/tests/file/stream_002.phpt53
-rw-r--r--ext/standard/tests/file/stream_copy_to_stream.phpt129
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_001.phpt20
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_002.phpt180
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_003.gifbin0 -> 273 bytes
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_003.phpt36
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_004.phpt30
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_005.phpt36
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_006.phpt28
-rwxr-xr-xext/standard/tests/file/stream_rfc2397_007.phpt141
-rw-r--r--ext/standard/tests/filters/001.phpt31
-rw-r--r--ext/standard/tests/filters/php_user_filter_01.phpt17
-rw-r--r--ext/standard/tests/filters/php_user_filter_02.phpt12
-rw-r--r--ext/standard/tests/filters/php_user_filter_03.phpt12
-rw-r--r--ext/standard/tests/general_functions/010.phpt25
-rw-r--r--ext/standard/tests/general_functions/sunfuncts.phpt50
-rw-r--r--ext/standard/tests/image/image_type_to_extension.phpt103
-rw-r--r--ext/standard/tests/math/constants.phpt46
-rwxr-xr-xext/standard/tests/serialize/bug37947.phpt21
-rw-r--r--ext/standard/tests/strings/bug22224.phpt7
-rw-r--r--ext/standard/tests/strings/bug24098.phpt4
-rw-r--r--ext/standard/tests/strings/bug29538.phpt10
-rw-r--r--ext/standard/tests/strings/bug37244.phpt18
-rw-r--r--ext/standard/tests/strings/bug37262.phpt9
-rw-r--r--ext/standard/tests/strings/bug38322.phpt13
-rw-r--r--ext/standard/tests/strings/bug39032.phpt18
-rw-r--r--ext/standard/tests/strings/explode.phpt2
-rw-r--r--ext/standard/tests/strings/htmlentities15.phpt4
-rw-r--r--ext/standard/tests/strings/implode1.phpt59
-rw-r--r--ext/standard/tests/strings/pathinfo.phpt108
-rw-r--r--ext/standard/tests/strings/str_replace.phpt108
-rw-r--r--ext/standard/tests/strings/str_word_count.phpt51
-rw-r--r--ext/standard/tests/strings/str_word_count1.phpt26
-rw-r--r--ext/standard/tests/strings/strings001.phpt2
-rw-r--r--ext/standard/tests/strings/stripos.phpt55
-rw-r--r--ext/standard/tests/strings/strrchr.phpt22
-rw-r--r--ext/standard/tests/strings/url_t.phpt21
-rwxr-xr-xext/standard/tests/time/bug38524.phpt29
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
new file mode 100644
index 000000000..0e838ef25
--- /dev/null
+++ b/ext/standard/tests/array/array_walk_objects.phpt
Binary files differ
diff --git a/ext/standard/tests/array/array_walk_rec_objects.phpt b/ext/standard/tests/array/array_walk_rec_objects.phpt
new file mode 100644
index 000000000..e1c5dd610
--- /dev/null
+++ b/ext/standard/tests/array/array_walk_rec_objects.phpt
Binary files differ
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
new file mode 100755
index 000000000..3dc4fc65f
--- /dev/null
+++ b/ext/standard/tests/file/stream_rfc2397_003.gif
Binary files differ
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===