Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
--TEST--
2
XMLRPCext Backend XML-RPC server Validator1 test (nestedStructTest)
3
--SKIPIF--
4
<?php
5
if (!function_exists('xmlrpc_server_create')) {
6
    print "Skip XMLRPC extension unavailable";
7
}
8
?>
9
--FILE--
10
<?php
11
class TestServer {
12
    /**
13
     * test function
14
     *
15
     * see http://www.xmlrpc.com/validator1Docs
16
     *
17
     * @param array $struct
18
     * @return int result
19
     */
20
    public static function nestedStructTest($struct) {
21
    	// just to avoir problems with numeric indexes...
22
    	$struct2 = array();
23
    	while (list($key, $year) = each($struct)) {
24
    		if ($key=='2000') {
25
    			while (list($key2, $month) = each($year)) {
26
    				if ($key2=='04') {
27
    					while (list($key3, $day) = each($month)) {
28
    						if ($key3=='01') {
29
    							return $day['moe'] + $day['larry'] + $day['curly'];
30
    						}
31
    					}
32
    				}
33
    			}
34
    		}
35
    	}
36
    }
37
}
38
 
39
set_include_path(realpath(dirname(__FILE__) . '/../../../../') . PATH_SEPARATOR . get_include_path());
40
require_once 'XML/RPC2/Server.php';
41
$options = array(
42
	'prefix' => 'validator1.',
43
	'backend' => 'Xmlrpcext'
44
);
45
 
46
$server = XML_RPC2_Server::create('TestServer', $options);
47
$GLOBALS['HTTP_RAW_POST_DATA'] = <<<EOS
48
<?xml version="1.0" encoding="iso-8859-1"?>
49
<methodCall>
50
<methodName>validator1.nestedStructTest</methodName>
51
<params>
52
 <param>
53
  <value>
54
   <struct>
55
    <member>
56
     <name>1999</name>
57
     <value>
58
      <struct>
59
       <member>
60
        <name>04</name>
61
        <value>
62
         <array>
63
          <data/>
64
         </array>
65
        </value>
66
       </member>
67
      </struct>
68
     </value>
69
    </member>
70
    <member>
71
     <name>2000</name>
72
     <value>
73
      <struct>
74
       <member>
75
        <name>04</name>
76
        <value>
77
         <struct>
78
          <member>
79
           <name>01</name>
80
           <value>
81
            <struct>
82
             <member>
83
              <name>moe</name>
84
              <value>
85
               <int>12</int>
86
              </value>
87
             </member>
88
             <member>
89
              <name>larry</name>
90
              <value>
91
               <int>14</int>
92
              </value>
93
             </member>
94
             <member>
95
              <name>curly</name>
96
              <value>
97
               <int>9</int>
98
              </value>
99
             </member>
100
            </struct>
101
           </value>
102
          </member>
103
         </struct>
104
        </value>
105
       </member>
106
      </struct>
107
     </value>
108
    </member>
109
    <member>
110
     <name>2001</name>
111
     <value>
112
      <struct>
113
       <member>
114
        <name>04</name>
115
        <value>
116
         <array>
117
          <data/>
118
         </array>
119
        </value>
120
       </member>
121
      </struct>
122
     </value>
123
    </member>
124
   </struct>
125
  </value>
126
 </param>
127
</params>
128
</methodCall>
129
EOS
130
;
131
$response = $server->getResponse();
132
$result = (XML_RPC2_Backend_Php_Response::decode(simplexml_load_string($response)));
133
var_dump($result);
134
 
135
?>
136
--EXPECT--
137
int(35)