7 This file is part of, or distributed with, libXMLRPC - a C library for
8 xml-encoded function calls.
10 Author: Dan Libby (dan@libby.com)
11 Epinions.com may be contacted at feedback@epinions-inc.com
15 Copyright 2001 Epinions, Inc.
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.
22 1) The above copyright notice and this permission notice shall be included
23 without modification in all copies or substantial portions of the
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.
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
40 include("xmlrpc_utils.php");
42 // ensure extension is loaded.
46 function do_test_case($title, $desc, $xml) {
48 $desc = "<p>$desc</p>";
53 <h3>Enter your xmlrpc query</h3>
54 <form method="get" action="validate.php">
55 <textarea rows='20' cols='80' name='xml'>
60 <input type='text' name='encoding' value='iso-8859-1'>
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
68 <i>These options apply to xml output type only.</i><br>
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
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
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
88 <input type='submit' value="Get your fresh hot xmlrpc!">
89 <input type='hidden' name='disp' value='html'>
99 title => "custom user input",
100 desc => "Enter your own xml here if you have a specific xmlrpc query you would like to perform.",
103 title => "arrayOfStructsTest",
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
109 "<?xml version='1.0'?>
111 <!-- expected answer = -166 -->
112 <methodName>validator1.arrayOfStructsTest</methodName>
300 title => "countTheEntities",
301 desc => "This handler takes a single parameter, a string, that contains any number of predefined entities, namely <,
304 Your handler must return a struct that contains five fields, all numbers: ctLeftAngleBrackets,
305 ctRightAngleBrackets, ctAmpersands, ctApostrophes, ctQuotes.
307 To validate, the numbers must be correct",
309 "<?xml version='1.0'?>
311 <methodName>validator1.countTheEntities</methodName>
314 <value>b&amp;htj&gt;q&lt;e&gt;ow&lt;&gt;&lt;a&quot;&gt;&quot;&gt;m&amp;&lt;y&gt;&gt;g&lt;&quot;kf&amp;nup&gt;&amp;lsz&amp;lt;xi&amp;d&quot;&lt;&apos;crv&lt;</value>
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.",
322 "<?xml version='1.0'?>
324 <methodName>validator1.easyStructTest</methodName>
351 title => "echoStructTest",
352 desc => "This handler takes a single parameter, a struct. Your handler must return the struct.",
354 "<?xml version='1.0'?>
356 <methodName>validator1.echoStructTest</methodName>
361 <name>substruct0</name>
386 <name>substruct1</name>
411 <name>substruct2</name>
436 <name>substruct3</name>
461 <name>substruct4</name>
486 <name>substruct5</name>
511 <name>substruct6</name>
536 <name>substruct7</name>
561 <name>substruct8</name>
586 <name>substruct9</name>
615 title => "manyTypesTest",
616 desc => "This handler takes six parameters, and returns an array containing all the parameters.",
618 "<?xml version='1.0'?>
620 <methodName>validator1.manyTypesTest</methodName>
623 <value><i4>24288</i4></value>
626 <value><boolean>0</boolean></value>
632 <value><double>1762.0</double></value>
635 <value><dateTime.iso8601>19040101T05:24:54</dateTime.iso8601></value>
638 <value><base64>R0lGODlhFgASAJEAAP/////OnM7O/wAAACH5BAEAAAAALAAAAAAWABIAAAJAhI+py40zDIzujEDBzW0n74AaFGChqZUYylyYq7ILXJJ1BU95l6r23RrRYhyL5jiJAT/Ink8WTPoqHx31im0UAAA7</base64></value>
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.",
646 "<?xml version='1.0'?>
648 <methodName>validator1.moderateSizeArrayCheck</methodName>
654 <value>Nebraska</value>
655 <value>Nebraska</value>
656 <value>Kansas</value>
657 <value>Tennessee</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>
667 <value>Nebraska</value>
668 <value>Washington</value>
669 <value>Oregon</value>
670 <value>Virginia</value>
671 <value>Arizona</value>
673 <value>South Carolina</value>
674 <value>Montana</value>
675 <value>Tennessee</value>
677 <value>Maryland</value>
678 <value>Michigan</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>
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>
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>
724 <value>Louisiana</value>
725 <value>Alaska</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>
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>
759 <value>Nebraska</value>
760 <value>Wisconsin</value>
761 <value>Kansas</value>
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.
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.",
777 "<?xml version='1.0'?>
779 <methodName>validator1.nestedStructTest</methodName>
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.",
1145 "<?xml version='1.0'?>
1147 <methodName>validator1.simpleStructReturnTest</methodName>
1150 <value><i4>55</i4></value>
1157 foreach($test_cases as $test_case) {
1158 do_test_case($test_case[title], $test_case[desc], $test_case[xml]);