]> CyberLeo.Net >> Repos - SourceForge/phpwiki.git/blob - tests/xmlrpc/validate-form.php
Add svn:keywords
[SourceForge/phpwiki.git] / tests / xmlrpc / validate-form.php
1 <html>
2
3 <?php // $Id$
4
5
6 /*
7   This file is part of, or distributed with, libXMLRPC - a C library for 
8   xml-encoded function calls.
9
10   Author: Dan Libby (dan@libby.com)
11   Epinions.com may be contacted at feedback@epinions-inc.com
12 */
13
14 /*  
15   Copyright 2001 Epinions, Inc. 
16
17   Subject to the following 3 conditions, Epinions, Inc.  permits you, free 
18   of charge, to (a) use, copy, distribute, modify, perform and display this 
19   software and associated documentation files (the "Software"), and (b) 
20   permit others to whom the Software is furnished to do so as well.  
21
22   1) The above copyright notice and this permission notice shall be included 
23   without modification in all copies or substantial portions of the 
24   Software.  
25
26   2) THE SOFTWARE IS PROVIDED "AS IS", WITHOUT ANY WARRANTY OR CONDITION OF 
27   ANY KIND, EXPRESS, IMPLIED OR STATUTORY, INCLUDING WITHOUT LIMITATION ANY 
28   IMPLIED WARRANTIES OF ACCURACY, MERCHANTABILITY, FITNESS FOR A PARTICULAR 
29   PURPOSE OR NONINFRINGEMENT.  
30
31   3) IN NO EVENT SHALL EPINIONS, INC. BE LIABLE FOR ANY DIRECT, INDIRECT, 
32   SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT 
33   OF OR IN CONNECTION WITH THE SOFTWARE (HOWEVER ARISING, INCLUDING 
34   NEGLIGENCE), EVEN IF EPINIONS, INC.  IS AWARE OF THE POSSIBILITY OF SUCH 
35   DAMAGES.    
36
37 */
38
39 // some utilities
40 include("xmlrpc_utils.php");
41
42 // ensure extension is loaded.
43 xu_load_extension();
44
45
46 function do_test_case($title, $desc, $xml) {
47    if($desc) {
48       $desc = "<p>$desc</p>";
49    }
50 echo <<< END
51 <h1>TEST: $title</h1>
52 $desc
53 <h3>Enter your xmlrpc query</h3>
54 <form method="get" action="validate.php">
55 <textarea rows='20' cols='80' name='xml'>
56 $xml
57 </textarea><br>
58
59 <b>encoding</b><br>
60 <input type='text' name='encoding' value='iso-8859-1'>
61 <br>
62
63 <b>output type</b><br>
64 <input type='radio' name='output_type' value='xml' checked>xml
65 <input type='radio' name='output_type' value='php'>php
66 <br>
67 <br>
68 <i>These options apply to xml output type only.</i><br>
69
70 <b>output version</b><br>
71 <input type='radio' name='version' value='xmlrpc' checked>xmlrpc
72 <input type='radio' name='version' value='simple'>simple
73 <br>
74
75 <b>output verbosity</b><br>
76 <input type='radio' name='verbosity' value='pretty' checked>pretty
77 <input type='radio' name='verbosity' value='newlines_only'>newlines only
78 <input type='radio' name='verbosity' value='no_white_space'>no white space
79 <br>
80
81 <b>output escaping</b><br>
82 <input type='checkbox' name='escaping[]' value='markup' checked>markup
83 <input type='checkbox' name='escaping[]' value='cdata'>cdata
84 <input type='checkbox' name='escaping[]' value='non-ascii'>non-ascii
85 <input type='checkbox' name='escaping[]' value='non-print'>non-print
86 <br>
87
88 <input type='submit' value="Get your fresh hot xmlrpc!">
89 <input type='hidden' name='disp' value='html'>
90 </form>
91 <hr>
92 END;
93
94 }
95
96
97 $test_cases = array(
98    array(
99       title => "custom user input",
100       desc => "Enter your own xml here if you have a specific xmlrpc query you would like to perform.",
101       xml => ""),
102 array(
103    title => "arrayOfStructsTest",
104    desc => 
105    "This handler takes a single parameter, an array of structs, each of which contains at least three elements
106     named moe, larry and curly, all <i4>s. Your handler must add all the struct elements named curly and
107     return the result.",
108    xml =>
109 "<?xml version='1.0'?>
110 <methodCall>
111 <!-- expected answer = -166 -->
112 <methodName>validator1.arrayOfStructsTest</methodName>
113 <params>
114 <param>
115 <value><array>
116 <data>
117 <value>
118 <struct>
119 <member>
120 <name>curly</name>
121 <value>
122 <i4>-79</i4>
123 </value>
124 </member>
125 <member>
126 <name>larry</name>
127 <value>
128 <i4>34</i4>
129 </value>
130 </member>
131 <member>
132 <name>moe</name>
133 <value>
134 <i4>19</i4>
135 </value>
136 </member>
137 </struct>
138 </value>
139 <value>
140 <struct>
141 <member>
142 <name>curly</name>
143 <value>
144 <i4>-33</i4>
145 </value>
146 </member>
147 <member>
148 <name>larry</name>
149 <value>
150 <i4>36</i4>
151 </value>
152 </member>
153 <member>
154 <name>moe</name>
155 <value>
156 <i4>40</i4>
157 </value>
158 </member>
159 </struct>
160 </value>
161 <value>
162 <struct>
163 <member>
164 <name>curly</name>
165 <value>
166 <i4>-30</i4>
167 </value>
168 </member>
169 <member>
170 <name>larry</name>
171 <value>
172 <i4>52</i4>
173 </value>
174 </member>
175 <member>
176 <name>moe</name>
177 <value>
178 <i4>1</i4>
179 </value>
180 </member>
181 </struct>
182 </value>
183 <value>
184 <struct>
185 <member>
186 <name>curly</name>
187 <value>
188 <i4>-7</i4>
189 </value>
190 </member>
191 <member>
192 <name>larry</name>
193 <value>
194 <i4>82</i4>
195 </value>
196 </member>
197 <member>
198 <name>moe</name>
199 <value>
200 <i4>35</i4>
201 </value>
202 </member>
203 </struct>
204 </value>
205 <value>
206 <struct>
207 <member>
208 <name>curly</name>
209 <value>
210 <i4>0</i4>
211 </value>
212 </member>
213 <member>
214 <name>larry</name>
215 <value>
216 <i4>54</i4>
217 </value>
218 </member>
219 <member>
220 <name>moe</name>
221 <value>
222 <i4>82</i4>
223 </value>
224 </member>
225 </struct>
226 </value>
227 <value>
228 <struct>
229 <member>
230 <name>curly</name>
231 <value>
232 <i4>-5</i4>
233 </value>
234 </member>
235 <member>
236 <name>larry</name>
237 <value>
238 <i4>5</i4>
239 </value>
240 </member>
241 <member>
242 <name>moe</name>
243 <value>
244 <i4>66</i4>
245 </value>
246 </member>
247 </struct>
248 </value>
249 <value>
250 <struct>
251 <member>
252 <name>curly</name>
253 <value>
254 <i4>-10</i4>
255 </value>
256 </member>
257 <member>
258 <name>larry</name>
259 <value>
260 <i4>65</i4>
261 </value>
262 </member>
263 <member>
264 <name>moe</name>
265 <value>
266 <i4>53</i4>
267 </value>
268 </member>
269 </struct>
270 </value>
271 <value>
272 <struct>
273 <member>
274 <name>curly</name>
275 <value>
276 <i4>-2</i4>
277 </value>
278 </member>
279 <member>
280 <name>larry</name>
281 <value>
282 <i4>66</i4>
283 </value>
284 </member>
285 <member>
286 <name>moe</name>
287 <value>
288 <i4>43</i4>
289 </value>
290 </member>
291 </struct>
292 </value>
293 </data>
294 </array></value>
295 </param>
296 </params>
297 </methodCall>" ),
298
299       array(
300       title => "countTheEntities",
301       desc => "This handler takes a single parameter, a string, that contains any number of predefined entities, namely <,
302                >, &, ' and \".
303
304                Your handler must return a struct that contains five fields, all numbers: ctLeftAngleBrackets,
305                ctRightAngleBrackets, ctAmpersands, ctApostrophes, ctQuotes. 
306
307                To validate, the numbers must be correct",
308       xml => 
309 "<?xml version='1.0'?>
310 <methodCall>
311 <methodName>validator1.countTheEntities</methodName>
312 <params>
313 <param>
314 <value>b&amp;amp;htj&amp;gt;q&amp;lt;e&amp;gt;ow&amp;lt;&amp;gt;&amp;lt;a&amp;quot;&amp;gt;&amp;quot;&amp;gt;m&amp;amp;&amp;lt;y&amp;gt;&amp;gt;g&amp;lt;&amp;quot;kf&amp;amp;nup&amp;gt;&amp;amp;lsz&amp;amp;lt;xi&amp;amp;d&amp;quot;&amp;lt;&amp;apos;crv&amp;lt;</value>
315 </param>
316 </params>
317 </methodCall>"),
318    array(
319       title => "easyStructTest",
320       desc => "This handler takes a single parameter, a struct, containing at least three elements named moe, larry and curly, all <i4>s. Your handler must add the three numbers and return the result.",
321       xml =>
322 "<?xml version='1.0'?>
323 <methodCall>
324         <methodName>validator1.easyStructTest</methodName>
325         <params>
326                 <param>
327                         <value><struct>
328                                 <member>
329                                         <name>curly</name>
330                                         <value>
331                                                 <i4>-60</i4>
332                                                 </value>
333                                         </member>
334                                 <member>
335                                         <name>larry</name>
336                                         <value>
337                                                 <i4>22</i4>
338                                                 </value>
339                                         </member>
340                                 <member>
341                                         <name>moe</name>
342                                         <value>
343                                                 <i4>37</i4>
344                                                 </value>
345                                         </member>
346                                 </struct></value>
347                         </param>
348                 </params>
349         </methodCall>"),
350       array(
351          title => "echoStructTest",
352          desc => "This handler takes a single parameter, a struct. Your handler must return the struct.",
353          xml =>
354 "<?xml version='1.0'?>
355 <methodCall>
356         <methodName>validator1.echoStructTest</methodName>
357         <params>
358                 <param>
359                         <value><struct>
360                                 <member>
361                                         <name>substruct0</name>
362                                         <value>
363                                                 <struct>
364                                                         <member>
365                                                                 <name>curly</name>
366                                                                 <value>
367                                                                         <i4>-52</i4>
368                                                                         </value>
369                                                                 </member>
370                                                         <member>
371                                                                 <name>larry</name>
372                                                                 <value>
373                                                                         <i4>55</i4>
374                                                                         </value>
375                                                                 </member>
376                                                         <member>
377                                                                 <name>moe</name>
378                                                                 <value>
379                                                                         <i4>82</i4>
380                                                                         </value>
381                                                                 </member>
382                                                         </struct>
383                                                 </value>
384                                         </member>
385                                 <member>
386                                         <name>substruct1</name>
387                                         <value>
388                                                 <struct>
389                                                         <member>
390                                                                 <name>curly</name>
391                                                                 <value>
392                                                                         <i4>-59</i4>
393                                                                         </value>
394                                                                 </member>
395                                                         <member>
396                                                                 <name>larry</name>
397                                                                 <value>
398                                                                         <i4>70</i4>
399                                                                         </value>
400                                                                 </member>
401                                                         <member>
402                                                                 <name>moe</name>
403                                                                 <value>
404                                                                         <i4>20</i4>
405                                                                         </value>
406                                                                 </member>
407                                                         </struct>
408                                                 </value>
409                                         </member>
410                                 <member>
411                                         <name>substruct2</name>
412                                         <value>
413                                                 <struct>
414                                                         <member>
415                                                                 <name>curly</name>
416                                                                 <value>
417                                                                         <i4>-26</i4>
418                                                                         </value>
419                                                                 </member>
420                                                         <member>
421                                                                 <name>larry</name>
422                                                                 <value>
423                                                                         <i4>1</i4>
424                                                                         </value>
425                                                                 </member>
426                                                         <member>
427                                                                 <name>moe</name>
428                                                                 <value>
429                                                                         <i4>4</i4>
430                                                                         </value>
431                                                                 </member>
432                                                         </struct>
433                                                 </value>
434                                         </member>
435                                 <member>
436                                         <name>substruct3</name>
437                                         <value>
438                                                 <struct>
439                                                         <member>
440                                                                 <name>curly</name>
441                                                                 <value>
442                                                                         <i4>-42</i4>
443                                                                         </value>
444                                                                 </member>
445                                                         <member>
446                                                                 <name>larry</name>
447                                                                 <value>
448                                                                         <i4>73</i4>
449                                                                         </value>
450                                                                 </member>
451                                                         <member>
452                                                                 <name>moe</name>
453                                                                 <value>
454                                                                         <i4>45</i4>
455                                                                         </value>
456                                                                 </member>
457                                                         </struct>
458                                                 </value>
459                                         </member>
460                                 <member>
461                                         <name>substruct4</name>
462                                         <value>
463                                                 <struct>
464                                                         <member>
465                                                                 <name>curly</name>
466                                                                 <value>
467                                                                         <i4>-48</i4>
468                                                                         </value>
469                                                                 </member>
470                                                         <member>
471                                                                 <name>larry</name>
472                                                                 <value>
473                                                                         <i4>16</i4>
474                                                                         </value>
475                                                                 </member>
476                                                         <member>
477                                                                 <name>moe</name>
478                                                                 <value>
479                                                                         <i4>57</i4>
480                                                                         </value>
481                                                                 </member>
482                                                         </struct>
483                                                 </value>
484                                         </member>
485                                 <member>
486                                         <name>substruct5</name>
487                                         <value>
488                                                 <struct>
489                                                         <member>
490                                                                 <name>curly</name>
491                                                                 <value>
492                                                                         <i4>-1</i4>
493                                                                         </value>
494                                                                 </member>
495                                                         <member>
496                                                                 <name>larry</name>
497                                                                 <value>
498                                                                         <i4>77</i4>
499                                                                         </value>
500                                                                 </member>
501                                                         <member>
502                                                                 <name>moe</name>
503                                                                 <value>
504                                                                         <i4>100</i4>
505                                                                         </value>
506                                                                 </member>
507                                                         </struct>
508                                                 </value>
509                                         </member>
510                                 <member>
511                                         <name>substruct6</name>
512                                         <value>
513                                                 <struct>
514                                                         <member>
515                                                                 <name>curly</name>
516                                                                 <value>
517                                                                         <i4>-44</i4>
518                                                                         </value>
519                                                                 </member>
520                                                         <member>
521                                                                 <name>larry</name>
522                                                                 <value>
523                                                                         <i4>2</i4>
524                                                                         </value>
525                                                                 </member>
526                                                         <member>
527                                                                 <name>moe</name>
528                                                                 <value>
529                                                                         <i4>42</i4>
530                                                                         </value>
531                                                                 </member>
532                                                         </struct>
533                                                 </value>
534                                         </member>
535                                 <member>
536                                         <name>substruct7</name>
537                                         <value>
538                                                 <struct>
539                                                         <member>
540                                                                 <name>curly</name>
541                                                                 <value>
542                                                                         <i4>-84</i4>
543                                                                         </value>
544                                                                 </member>
545                                                         <member>
546                                                                 <name>larry</name>
547                                                                 <value>
548                                                                         <i4>18</i4>
549                                                                         </value>
550                                                                 </member>
551                                                         <member>
552                                                                 <name>moe</name>
553                                                                 <value>
554                                                                         <i4>95</i4>
555                                                                         </value>
556                                                                 </member>
557                                                         </struct>
558                                                 </value>
559                                         </member>
560                                 <member>
561                                         <name>substruct8</name>
562                                         <value>
563                                                 <struct>
564                                                         <member>
565                                                                 <name>curly</name>
566                                                                 <value>
567                                                                         <i4>-48</i4>
568                                                                         </value>
569                                                                 </member>
570                                                         <member>
571                                                                 <name>larry</name>
572                                                                 <value>
573                                                                         <i4>93</i4>
574                                                                         </value>
575                                                                 </member>
576                                                         <member>
577                                                                 <name>moe</name>
578                                                                 <value>
579                                                                         <i4>80</i4>
580                                                                         </value>
581                                                                 </member>
582                                                         </struct>
583                                                 </value>
584                                         </member>
585                                 <member>
586                                         <name>substruct9</name>
587                                         <value>
588                                                 <struct>
589                                                         <member>
590                                                                 <name>curly</name>
591                                                                 <value>
592                                                                         <i4>-82</i4>
593                                                                         </value>
594                                                                 </member>
595                                                         <member>
596                                                                 <name>larry</name>
597                                                                 <value>
598                                                                         <i4>58</i4>
599                                                                         </value>
600                                                                 </member>
601                                                         <member>
602                                                                 <name>moe</name>
603                                                                 <value>
604                                                                         <i4>21</i4>
605                                                                         </value>
606                                                                 </member>
607                                                         </struct>
608                                                 </value>
609                                         </member>
610                                 </struct></value>
611                         </param>
612                 </params>
613         </methodCall>"),
614          array(
615             title => "manyTypesTest",
616             desc => "This handler takes six parameters, and returns an array containing all the parameters.",
617             xml => 
618 "<?xml version='1.0'?>
619 <methodCall>
620         <methodName>validator1.manyTypesTest</methodName>
621         <params>
622                 <param>
623                         <value><i4>24288</i4></value>
624                         </param>
625                 <param>
626                         <value><boolean>0</boolean></value>
627                         </param>
628                 <param>
629                         <value>Texas</value>
630                         </param>
631                 <param>
632                         <value><double>1762.0</double></value>
633                         </param>
634                 <param>
635                         <value><dateTime.iso8601>19040101T05:24:54</dateTime.iso8601></value>
636                         </param>
637                 <param>
638                         <value><base64>R0lGODlhFgASAJEAAP/////OnM7O/wAAACH5BAEAAAAALAAAAAAWABIAAAJAhI+py40zDIzujEDBzW0n74AaFGChqZUYylyYq7ILXJJ1BU95l6r23RrRYhyL5jiJAT/Ink8WTPoqHx31im0UAAA7</base64></value>
639                         </param>
640                 </params>
641         </methodCall>"),
642    array(
643       title => "moderateSizeArrayCheck",
644       desc => "This handler takes a single parameter, which is an array containing between 100 and 200 elements. Each of the items is a string, your handler must return a string containing the concatenated text of the first and last elements.",
645       xml => 
646 "<?xml version='1.0'?>
647 <methodCall>
648         <methodName>validator1.moderateSizeArrayCheck</methodName>
649         <params>
650                 <param>
651                         <value><array>
652                                 <data>
653                                         <value>Maine</value>
654                                         <value>Nebraska</value>
655                                         <value>Nebraska</value>
656                                         <value>Kansas</value>
657                                         <value>Tennessee</value>
658                                         <value>Ohio</value>
659                                         <value>Oregon</value>
660                                         <value>Missouri</value>
661                                         <value>Mississippi</value>
662                                         <value>Michigan</value>
663                                         <value>Pennsylvania</value>
664                                         <value>Rhode Island</value>
665                                         <value>Iowa</value>
666                                         <value>Iowa</value>
667                                         <value>Nebraska</value>
668                                         <value>Washington</value>
669                                         <value>Oregon</value>
670                                         <value>Virginia</value>
671                                         <value>Arizona</value>
672                                         <value>Utah</value>
673                                         <value>South Carolina</value>
674                                         <value>Montana</value>
675                                         <value>Tennessee</value>
676                                         <value>Iowa</value>
677                                         <value>Maryland</value>
678                                         <value>Michigan</value>
679                                         <value>Iowa</value>
680                                         <value>Wisconsin</value>
681                                         <value>Delaware</value>
682                                         <value>Kansas</value>
683                                         <value>North Dakota</value>
684                                         <value>Massachusetts</value>
685                                         <value>New Mexico</value>
686                                         <value>Alaska</value>
687                                         <value>Michigan</value>
688                                         <value>Colorado</value>
689                                         <value>Wisconsin</value>
690                                         <value>South Dakota</value>
691                                         <value>Vermont</value>
692                                         <value>Virginia</value>
693                                         <value>Arkansas</value>
694                                         <value>Wisconsin</value>
695                                         <value>Colorado</value>
696                                         <value>Iowa</value>
697                                         <value>Oregon</value>
698                                         <value>Arizona</value>
699                                         <value>Michigan</value>
700                                         <value>Illinois</value>
701                                         <value>Virginia</value>
702                                         <value>Florida</value>
703                                         <value>South Carolina</value>
704                                         <value>Florida</value>
705                                         <value>Arkansas</value>
706                                         <value>Maryland</value>
707                                         <value>Rhode Island</value>
708                                         <value>Washington</value>
709                                         <value>Georgia</value>
710                                         <value>Arizona</value>
711                                         <value>Iowa</value>
712                                         <value>Louisiana</value>
713                                         <value>Washington</value>
714                                         <value>Nevada</value>
715                                         <value>Alaska</value>
716                                         <value>Hawaii</value>
717                                         <value>New Hampshire</value>
718                                         <value>West Virginia</value>
719                                         <value>South Carolina</value>
720                                         <value>Vermont</value>
721                                         <value>Tennessee</value>
722                                         <value>Connecticut</value>
723                                         <value>Maine</value>
724                                         <value>Louisiana</value>
725                                         <value>Alaska</value>
726                                         <value>Maine</value>
727                                         <value>California</value>
728                                         <value>Vermont</value>
729                                         <value>Rhode Island</value>
730                                         <value>West Virginia</value>
731                                         <value>Colorado</value>
732                                         <value>Delaware</value>
733                                         <value>Massachusetts</value>
734                                         <value>Rhode Island</value>
735                                         <value>Nevada</value>
736                                         <value>Oklahoma</value>
737                                         <value>Nebraska</value>
738                                         <value>Ohio</value>
739                                         <value>Indiana</value>
740                                         <value>Mississippi</value>
741                                         <value>Mississippi</value>
742                                         <value>Washington</value>
743                                         <value>Tennessee</value>
744                                         <value>Arkansas</value>
745                                         <value>Alaska</value>
746                                         <value>Rhode Island</value>
747                                         <value>Oklahoma</value>
748                                         <value>Massachusetts</value>
749                                         <value>Connecticut</value>
750                                         <value>Connecticut</value>
751                                         <value>Virginia</value>
752                                         <value>Nebraska</value>
753                                         <value>Alabama</value>
754                                         <value>Louisiana</value>
755                                         <value>Colorado</value>
756                                         <value>Vermont</value>
757                                         <value>New Hampshire</value>
758                                         <value>Ohio</value>
759                                         <value>Nebraska</value>
760                                         <value>Wisconsin</value>
761                                         <value>Kansas</value>
762                                         </data>
763                                 </array></value>
764                         </param>
765                 </params>
766         </methodCall>"),
767       array(
768          title => "nestedStructTest",
769          desc => "This handler takes a single parameter, a struct, that models a daily calendar. At the top level, there is one
770                   struct for each year. Each year is broken down into months, and months into days. Most of the days are
771                   empty in the struct you receive, but the entry for April 1, 2000 contains a least three elements named moe,
772                   larry and curly, all <i4>s. Your handler must add the three numbers and return the result.
773                   <p>
774                   Ken MacLeod: \"This description isn't clear, I expected '2000.April.1' when in fact it's '2000.04.01'. Adding
775                   a note saying that month and day are two-digits with leading 0s, and January is 01 would help.\" Done.",
776          xml => 
777 "<?xml version='1.0'?>
778 <methodCall>
779 <methodName>validator1.nestedStructTest</methodName>
780 <params>
781 <param>
782 <value><struct>
783 <member>
784 <name>2000</name>
785 <value>
786 <struct>
787 <member>
788 <name>03</name>
789 <value>
790 <struct>
791 <member>
792 <name>10</name>
793 <value>
794 <struct>
795 </struct>
796 </value>
797 </member>
798 <member>
799 <name>11</name>
800 <value>
801 <struct>
802 </struct>
803 </value>
804 </member>
805 <member>
806 <name>12</name>
807 <value>
808 <struct>
809 </struct>
810 </value>
811 </member>
812 <member>
813 <name>13</name>
814 <value>
815 <struct>
816 </struct>
817 </value>
818 </member>
819 <member>
820 <name>14</name>
821 <value>
822 <struct>
823 </struct>
824 </value>
825 </member>
826 <member>
827 <name>15</name>
828 <value>
829 <struct>
830 </struct>
831 </value>
832 </member>
833 <member>
834 <name>16</name>
835 <value>
836 <struct>
837 </struct>
838 </value>
839 </member>
840 <member>
841 <name>17</name>
842 <value>
843 <struct>
844 </struct>
845 </value>
846 </member>
847 <member>
848 <name>18</name>
849 <value>
850 <struct>
851 </struct>
852 </value>
853 </member>
854 <member>
855 <name>19</name>
856 <value>
857 <struct>
858 </struct>
859 </value>
860 </member>
861 <member>
862 <name>20</name>
863 <value>
864 <struct>
865 </struct>
866 </value>
867 </member>
868 <member>
869 <name>21</name>
870 <value>
871 <struct>
872 </struct>
873 </value>
874 </member>
875 <member>
876 <name>22</name>
877 <value>
878 <struct>
879 </struct>
880 </value>
881 </member>
882 <member>
883 <name>23</name>
884 <value>
885 <struct>
886 </struct>
887 </value>
888 </member>
889 <member>
890 <name>24</name>
891 <value>
892 <struct>
893 </struct>
894 </value>
895 </member>
896 <member>
897 <name>25</name>
898 <value>
899 <struct>
900 </struct>
901 </value>
902 </member>
903 <member>
904 <name>26</name>
905 <value>
906 <struct>
907 </struct>
908 </value>
909 </member>
910 <member>
911 <name>27</name>
912 <value>
913 <struct>
914 </struct>
915 </value>
916 </member>
917 <member>
918 <name>28</name>
919 <value>
920 <struct>
921 </struct>
922 </value>
923 </member>
924 <member>
925 <name>29</name>
926 <value>
927 <struct>
928 </struct>
929 </value>
930 </member>
931 <member>
932 <name>30</name>
933 <value>
934 <struct>
935 </struct>
936 </value>
937 </member>
938 <member>
939 <name>31</name>
940 <value>
941 <struct>
942 </struct>
943 </value>
944 </member>
945 </struct>
946 </value>
947 </member>
948 <member>
949 <name>04</name>
950 <value>
951 <struct>
952 <member>
953 <name>01</name>
954 <value>
955 <struct>
956 <member>
957 <name>curly</name>
958 <value>
959         <i4>-23</i4>
960         </value>
961 </member>
962 <member>
963 <name>larry</name>
964 <value>
965         <i4>96</i4>
966         </value>
967 </member>
968 <member>
969 <name>moe</name>
970 <value>
971         <i4>17</i4>
972         </value>
973 </member>
974 </struct>
975 </value>
976 </member>
977 <member>
978 <name>02</name>
979 <value>
980 <struct>
981 </struct>
982 </value>
983 </member>
984 <member>
985 <name>03</name>
986 <value>
987 <struct>
988 </struct>
989 </value>
990 </member>
991 <member>
992 <name>04</name>
993 <value>
994 <struct>
995 </struct>
996 </value>
997 </member>
998 <member>
999 <name>05</name>
1000 <value>
1001 <struct>
1002 </struct>
1003 </value>
1004 </member>
1005 <member>
1006 <name>06</name>
1007 <value>
1008 <struct>
1009 </struct>
1010 </value>
1011 </member>
1012 <member>
1013 <name>07</name>
1014 <value>
1015 <struct>
1016 </struct>
1017 </value>
1018 </member>
1019 <member>
1020 <name>08</name>
1021 <value>
1022 <struct>
1023 </struct>
1024 </value>
1025 </member>
1026 <member>
1027 <name>09</name>
1028 <value>
1029 <struct>
1030 </struct>
1031 </value>
1032 </member>
1033 <member>
1034 <name>10</name>
1035 <value>
1036 <struct>
1037 </struct>
1038 </value>
1039 </member>
1040 <member>
1041 <name>11</name>
1042 <value>
1043 <struct>
1044 </struct>
1045 </value>
1046 </member>
1047 <member>
1048 <name>12</name>
1049 <value>
1050 <struct>
1051 </struct>
1052 </value>
1053 </member>
1054 <member>
1055 <name>13</name>
1056 <value>
1057 <struct>
1058 </struct>
1059 </value>
1060 </member>
1061 <member>
1062 <name>14</name>
1063 <value>
1064 <struct>
1065 </struct>
1066 </value>
1067 </member>
1068 <member>
1069 <name>15</name>
1070 <value>
1071 <struct>
1072 </struct>
1073 </value>
1074 </member>
1075 <member>
1076 <name>16</name>
1077 <value>
1078 <struct>
1079 </struct>
1080 </value>
1081 </member>
1082 <member>
1083 <name>17</name>
1084 <value>
1085 <struct>
1086 </struct>
1087 </value>
1088 </member>
1089 <member>
1090 <name>18</name>
1091 <value>
1092 <struct>
1093 </struct>
1094 </value>
1095 </member>
1096 <member>
1097 <name>19</name>
1098 <value>
1099 <struct>
1100 </struct>
1101 </value>
1102 </member>
1103 <member>
1104 <name>20</name>
1105 <value>
1106 <struct>
1107 </struct>
1108 </value>
1109 </member>
1110 <member>
1111 <name>21</name>
1112 <value>
1113 <struct>
1114 </struct>
1115 </value>
1116 </member>
1117 <member>
1118 <name>22</name>
1119 <value>
1120 <struct>
1121 </struct>
1122 </value>
1123 </member>
1124 <member>
1125 <name>23</name>
1126 <value>
1127 <struct>
1128 </struct>
1129 </value>
1130 </member>
1131 </struct>
1132 </value>
1133 </member>
1134 </struct>
1135 </value>
1136 </member>
1137 </struct></value>
1138 </param>
1139 </params>
1140 </methodCall>"),
1141          array(
1142             title => "simpleStructReturnTest",
1143             desc => "This handler takes one parameter, and returns a struct containing three elements, times10, times100 and times1000, the result of multiplying the number by 10, 100 and 1000.",
1144             xml =>
1145 "<?xml version='1.0'?>
1146 <methodCall>
1147 <methodName>validator1.simpleStructReturnTest</methodName>
1148 <params>
1149 <param>
1150         <value><i4>55</i4></value>
1151         </param>
1152 </params>
1153 </methodCall>")
1154
1155 );
1156
1157 foreach($test_cases as $test_case) {
1158    do_test_case($test_case[title], $test_case[desc], $test_case[xml]);
1159 }
1160
1161 ?>
1162
1163 </html>