~ubuntu-branches/ubuntu/quantal/php5/quantal

« back to all changes in this revision

Viewing changes to ext/soap/interop/test.utility.php

  • Committer: Bazaar Package Importer
  • Author(s): Sean Finney
  • Date: 2009-07-01 09:12:10 UTC
  • mto: (0.9.1) (1.1.17 upstream)
  • mto: This revision was merged to the branch mainline in revision 58.
  • Revision ID: james.westby@ubuntu.com-20090701091210-go0h6506p62on17r
Tags: upstream-5.3.0
ImportĀ upstreamĀ versionĀ 5.3.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
function timestamp_to_soap_datetime($t) {
 
4
  return date('Y-m-d\TH:i:sO',$t);
 
5
}
 
6
 
 
7
function soap_datetime_to_timestamp($t) {
 
8
        /* Ignore Microsecconds */
 
9
  $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})?';
 
10
  if (!is_int($t)) {
 
11
          if (!ereg($iso8601,$t,$r)) {
 
12
          return false;
 
13
          }
 
14
        $t = gmmktime($r[4],$r[5],$r[6],$r[2],$r[3],$r[1]);
 
15
          if (!empty($r[8]) && $r[8] != 'Z') {
 
16
                  $op = substr($r[8],0,1);
 
17
                $h = substr($r[8],1,2);
 
18
                if (strstr($r[8],':')) {
 
19
                  $m = substr($r[8],4,2);
 
20
                  } else {
 
21
                  $m = substr($r[8],3,2);
 
22
                  }
 
23
                $t += (($op == "-"?1:-1) * $h * 60 + $m) * 60;
 
24
                }
 
25
  }
 
26
  return $t;
 
27
}
 
28
 
 
29
function date_compare($f1,$f2)
 
30
{
 
31
        return soap_datetime_to_timestamp($f1) == soap_datetime_to_timestamp($f2);
 
32
}
 
33
 
 
34
function hex_compare($f1, $f2)
 
35
{
 
36
  return strcasecmp($f1,$f2) == 0;
 
37
}
 
38
 
 
39
function number_compare($f1, $f2)
 
40
{
 
41
    # figure out which has the least fractional digits
 
42
    preg_match('/.*?\.(.*)/',$f1,$m1);
 
43
    preg_match('/.*?\.(.*)/',$f2,$m2);
 
44
    #print_r($m1);
 
45
    # always use at least 2 digits of precision
 
46
    $d = max(min(strlen(count($m1)?$m1[1]:'0'),strlen(count($m2)?$m2[1]:'0')),2);
 
47
    $f1 = round($f1, $d);
 
48
    $f2 = round($f2, $d);
 
49
    return $f1 == $f2;
 
50
//    return bccomp($f1, $f2, $d) == 0;
 
51
}
 
52
 
 
53
function boolean_compare($f1, $f2)
 
54
{
 
55
    if (($f1 == 'true' || $f1 === TRUE || $f1 != 0) &&
 
56
        ($f2 == 'true' || $f2 === TRUE || $f2 != 0)) return TRUE;
 
57
    if (($f1 == 'false' || $f1 === FALSE || $f1 == 0) &&
 
58
        ($f2 == 'false' || $f2 === FALSE || $f2 == 0)) return TRUE;
 
59
    return FALSE;
 
60
}
 
61
 
 
62
function string_compare($e1, $e2)
 
63
{
 
64
    if (is_numeric($e1) && is_numeric($e2)) {
 
65
        return number_compare($e1, $e2);
 
66
    }
 
67
    # handle dateTime comparison
 
68
    $e1_type = gettype($e1);
 
69
    $e2_type = gettype($e2);
 
70
    $ok = FALSE;
 
71
    if ($e1_type == "string") {
 
72
//        $dt = new SOAP_Type_dateTime();
 
73
//        $ok = $dt->compare($e1, $e2) == 0;
 
74
        $oj = false;
 
75
    }
 
76
    return $ok || $e1 == $e2 || strcasecmp(trim($e1), trim($e2)) == 0;
 
77
}
 
78
 
 
79
function array_compare(&$ar1, &$ar2) {
 
80
  if (gettype($ar1) != 'array' || gettype($ar2) != 'array') return FALSE;
 
81
  if (count($ar1) != count($ar2)) return FALSE;
 
82
  foreach ($ar1 as $k => $v) {
 
83
    if (!array_key_exists($k,$ar2)) return FALSE;
 
84
    if (!compare($v,$ar2[$k])) return FALSE;
 
85
  }
 
86
  return TRUE;
 
87
}
 
88
 
 
89
function object_compare(&$obj1, &$obj2) {
 
90
  if (gettype($obj1) != 'object' || gettype($obj2) != 'object') return FALSE;
 
91
//  if (class_name(obj1) != class_name(obj2)) return FALSE;
 
92
  $ar1 = (array)$obj1;
 
93
  $ar2 = (array)$obj2;
 
94
  return array_compare($ar1,$ar2);
 
95
}
 
96
 
 
97
function compare(&$x,&$y) {
 
98
  $ok = 0;
 
99
  $x_type = gettype($x);
 
100
  $y_type = gettype($y);
 
101
  if ($x_type == $y_type) {
 
102
    if ($x_type == "array") {
 
103
      $ok = array_compare($x, $y);
 
104
    } else if ($x_type == "object") {
 
105
      $ok = object_compare($x, $y);
 
106
    } else if ($x_type == "double") {
 
107
      $ok = number_compare($x, $y);
 
108
//    } else if ($x_type == 'boolean') {
 
109
//      $ok = boolean_compare($x, $y);
 
110
    } else {
 
111
        $ok = ($x == $y);
 
112
//      $ok = string_compare($expect, $result);
 
113
    }
 
114
  }
 
115
  return $ok;
 
116
}
 
117
 
 
118
 
 
119
function parseMessage($msg)
 
120
{
 
121
    # strip line endings
 
122
    #$msg = preg_replace('/\r|\n/', ' ', $msg);
 
123
    $response = new SOAP_Parser($msg);
 
124
    if ($response->fault) {
 
125
        return $response->fault->getFault();
 
126
    }
 
127
    $return = $response->getResponse();
 
128
    $v = $response->decode($return);
 
129
    if (gettype($v) == 'array' && count($v)==1) {
 
130
        return array_shift($v);
 
131
    }
 
132
    return $v;
 
133
}
 
134
 
 
135
function var_dump_str($var) {
 
136
  ob_start();
 
137
  var_dump($var);
 
138
  $res = ob_get_contents();
 
139
  ob_end_clean();
 
140
  return $res;
 
141
}
 
142
 
 
143
?>
 
 
b'\\ No newline at end of file'