summaryrefslogtreecommitdiff
path: root/ext/soap/interop/test.utility.php
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2013-03-14 05:42:27 +0000
committer <>2013-04-03 16:25:08 +0000
commitc4dd7a1a684490673e25aaf4fabec5df138854c4 (patch)
tree4d57c44caae4480efff02b90b9be86f44bf25409 /ext/soap/interop/test.utility.php
downloadphp2-master.tar.gz
Imported from /home/lorry/working-area/delta_php2/php-5.4.13.tar.bz2.HEADphp-5.4.13master
Diffstat (limited to 'ext/soap/interop/test.utility.php')
-rw-r--r--ext/soap/interop/test.utility.php143
1 files changed, 143 insertions, 0 deletions
diff --git a/ext/soap/interop/test.utility.php b/ext/soap/interop/test.utility.php
new file mode 100644
index 0000000..5b1f699
--- /dev/null
+++ b/ext/soap/interop/test.utility.php
@@ -0,0 +1,143 @@
+<?php
+
+function timestamp_to_soap_datetime($t) {
+ return date('Y-m-d\TH:i:sO',$t);
+}
+
+function soap_datetime_to_timestamp($t) {
+ /* Ignore Microsecconds */
+ $iso8601 = '(-?[0-9]{4})-([0-9]{2})-([0-9]{2})T([0-9]{2}):([0-9]{2}):([0-9]{2})(\.[0-9]*)?(Z|[+\-][0-9]{4}|[+\-][0-9]{2}:[0-9]{2})?';
+ if (!is_int($t)) {
+ if (!ereg($iso8601,$t,$r)) {
+ return false;
+ }
+ $t = gmmktime($r[4],$r[5],$r[6],$r[2],$r[3],$r[1]);
+ if (!empty($r[8]) && $r[8] != 'Z') {
+ $op = substr($r[8],0,1);
+ $h = substr($r[8],1,2);
+ if (strstr($r[8],':')) {
+ $m = substr($r[8],4,2);
+ } else {
+ $m = substr($r[8],3,2);
+ }
+ $t += (($op == "-"?1:-1) * $h * 60 + $m) * 60;
+ }
+ }
+ return $t;
+}
+
+function date_compare($f1,$f2)
+{
+ return soap_datetime_to_timestamp($f1) == soap_datetime_to_timestamp($f2);
+}
+
+function hex_compare($f1, $f2)
+{
+ return strcasecmp($f1,$f2) == 0;
+}
+
+function number_compare($f1, $f2)
+{
+ # figure out which has the least fractional digits
+ preg_match('/.*?\.(.*)/',$f1,$m1);
+ preg_match('/.*?\.(.*)/',$f2,$m2);
+ #print_r($m1);
+ # always use at least 2 digits of precision
+ $d = max(min(strlen(count($m1)?$m1[1]:'0'),strlen(count($m2)?$m2[1]:'0')),2);
+ $f1 = round($f1, $d);
+ $f2 = round($f2, $d);
+ return $f1 == $f2;
+// return bccomp($f1, $f2, $d) == 0;
+}
+
+function boolean_compare($f1, $f2)
+{
+ if (($f1 == 'true' || $f1 === TRUE || $f1 != 0) &&
+ ($f2 == 'true' || $f2 === TRUE || $f2 != 0)) return TRUE;
+ if (($f1 == 'false' || $f1 === FALSE || $f1 == 0) &&
+ ($f2 == 'false' || $f2 === FALSE || $f2 == 0)) return TRUE;
+ return FALSE;
+}
+
+function string_compare($e1, $e2)
+{
+ if (is_numeric($e1) && is_numeric($e2)) {
+ return number_compare($e1, $e2);
+ }
+ # handle dateTime comparison
+ $e1_type = gettype($e1);
+ $e2_type = gettype($e2);
+ $ok = FALSE;
+ if ($e1_type == "string") {
+// $dt = new SOAP_Type_dateTime();
+// $ok = $dt->compare($e1, $e2) == 0;
+ $oj = false;
+ }
+ return $ok || $e1 == $e2 || strcasecmp(trim($e1), trim($e2)) == 0;
+}
+
+function array_compare(&$ar1, &$ar2) {
+ if (gettype($ar1) != 'array' || gettype($ar2) != 'array') return FALSE;
+ if (count($ar1) != count($ar2)) return FALSE;
+ foreach ($ar1 as $k => $v) {
+ if (!array_key_exists($k,$ar2)) return FALSE;
+ if (!compare($v,$ar2[$k])) return FALSE;
+ }
+ return TRUE;
+}
+
+function object_compare(&$obj1, &$obj2) {
+ if (gettype($obj1) != 'object' || gettype($obj2) != 'object') return FALSE;
+// if (class_name(obj1) != class_name(obj2)) return FALSE;
+ $ar1 = (array)$obj1;
+ $ar2 = (array)$obj2;
+ return array_compare($ar1,$ar2);
+}
+
+function compare(&$x,&$y) {
+ $ok = 0;
+ $x_type = gettype($x);
+ $y_type = gettype($y);
+ if ($x_type == $y_type) {
+ if ($x_type == "array") {
+ $ok = array_compare($x, $y);
+ } else if ($x_type == "object") {
+ $ok = object_compare($x, $y);
+ } else if ($x_type == "double") {
+ $ok = number_compare($x, $y);
+// } else if ($x_type == 'boolean') {
+// $ok = boolean_compare($x, $y);
+ } else {
+ $ok = ($x == $y);
+// $ok = string_compare($expect, $result);
+ }
+ }
+ return $ok;
+}
+
+
+function parseMessage($msg)
+{
+ # strip line endings
+ #$msg = preg_replace('/\r|\n/', ' ', $msg);
+ $response = new SOAP_Parser($msg);
+ if ($response->fault) {
+ return $response->fault->getFault();
+ }
+ $return = $response->getResponse();
+ $v = $response->decode($return);
+ if (gettype($v) == 'array' && count($v)==1) {
+ return array_shift($v);
+ }
+ return $v;
+}
+
+function var_dump_str($var) {
+ ob_start();
+ var_dump($var);
+ $res = ob_get_contents();
+ ob_end_clean();
+ return $res;
+}
+
+?> \ No newline at end of file