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