| //=================================================================================== |
| // |
| // (C) COPYRIGHT International Business Machines Corp., 2002 All Rights Reserved |
| // Licensed Materials - Property of IBM |
| // US Government Users Restricted Rights - Use, duplication or |
| // disclosure restricted by GSA ADP Schedule Contract with IBM Corp. |
| // |
| // IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING |
| // ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| // PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR |
| // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF |
| // USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR |
| // OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE |
| // OR PERFORMANCE OF THIS SOFTWARE. |
| // |
| // The program may be used, executed, copied, modified, and distributed |
| // without royalty for the purpose of developing, using, marketing, or distributing. |
| // |
| //======================================================================================= |
| // gSOAP v2 Interop B test round 2 |
| #include "soapH.h" |
| extern "C" void displayText(char *text); |
| extern "C" int interopC(const char *site); |
| |
| |
| struct Namespace namespacesC[] = |
| { {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"}, |
| {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"}, |
| {"xsi", "http://www.w3.org/2001/XMLSchema-instance", "http://www.w3.org/*/XMLSchema-instance"}, |
| {"xsd", "http://www.w3.org/2001/XMLSchema", "http://www.w3.org/*/XMLSchema"}, |
| {"m", "http://soapinterop.org/"}, |
| {"s", "http://soapinterop.org/xsd"}, |
| {"a", "http://xml.apache.org/xml-soap"}, |
| {"h", "http://soapinterop.org/echoheader/"}, |
| {NULL, NULL} |
| }; |
| int interopC(const char *url) |
| { struct soap *soap; |
| char *site=(char*)url; |
| bool ok=true; |
| xsd__int n = 42; |
| float f = 3.40282e+38; |
| struct SOAP_ENV__Header h; |
| struct m__echoVoidResponse r; |
| struct s__SOAPStruct s; |
| |
| h.h__echoMeStringRequest = NULL; |
| h.h__echoMeStringRequest_ = NULL; |
| h.h__echoMeStringResponse = NULL; |
| h.h__echoMeStructRequest = NULL; |
| h.h__echoMeStructRequest_ = NULL; |
| h.h__echoMeStructResponse = NULL; |
| h.h__someUnknownRequest = NULL; |
| h.h__someUnknownRequest_ = NULL; |
| s.varString = "hello world"; |
| s.varInt = &n; |
| s.varFloat = &f; |
| |
| |
| displayText("running test C on"); |
| displayText((char*)url); |
| soap = soap_new(); |
| soap->namespaces = (struct Namespace *)namespacesC; |
| |
| soap->send_timeout = 300; |
| soap->recv_timeout = 300; |
| |
| // request from client (with mustUnderstand="0", recipient is target) |
| h.h__echoMeStringRequest = "hello world"; |
| soap->header = &h; |
| soap->actor = "http://schemas.xmlsoap.org/soap/actor/next"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo1 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo1 passed"); |
| |
| // request from client (with mustUnderstand="0", recipient is not target) |
| soap->header = &h; |
| soap->actor = "http://some/other/actor"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo2 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo2 passed"); |
| |
| // request from client (with mustUnderstand="1", recipient is target) |
| h.h__echoMeStringRequest = NULL; |
| h.h__echoMeStructRequest_ = &s; |
| soap->header = &h; |
| soap->actor = "http://schemas.xmlsoap.org/soap/actor/next"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo3 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo3 passed"); |
| |
| // request from client (with mustUnderstand="1", recipient is not target) |
| soap->header = &h; |
| soap->actor = "http://some/other/actor"; |
| if (soap_call_m__echoVoid(soap,site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo4 failed"); |
| ok=false; |
| } |
| else if (soap->header && soap->header->h__echoMeStructResponse) |
| { |
| displayText("echo4 should be no response header"); |
| ok=false; |
| } |
| else |
| displayText("echo4 passed"); |
| |
| // Unknown header element: request from client (with mustUnderstand="0", recipient is target) |
| h.h__echoMeStructRequest_ = NULL; |
| h.h__someUnknownRequest = "XYZ"; |
| soap->header = &h; |
| soap->actor = "http://schemas.xmlsoap.org/soap/actor/next"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo5 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo5 passed"); |
| |
| // Unknown header element: request from client (with mustUnderstand="1", recipient is target) |
| h.h__someUnknownRequest = NULL; |
| h.h__someUnknownRequest_ = "XYZ"; |
| soap->header = &h; |
| soap->actor = "http://schemas.xmlsoap.org/soap/actor/next"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r) != SOAP_MUSTUNDERSTAND) |
| { |
| displayText("echo6 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo6 passed"); |
| |
| // Unknown header element: request from client (with mustUnderstand="0", recipient is not target) |
| h.h__someUnknownRequest_ = NULL; |
| h.h__someUnknownRequest = "XYZ"; |
| soap->header = &h; |
| soap->actor = "http://some/other/actor"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo7 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo7 passed"); |
| |
| // Unknown header element: request from client (with mustUnderstand="1", recipient is not target) |
| h.h__someUnknownRequest = NULL; |
| h.h__someUnknownRequest_ = "XYZ"; |
| soap->header = &h; |
| soap->actor = "http://some/other/actor"; |
| if (soap_call_m__echoVoid(soap, site, "http://soapinterop.org/", r)) |
| { |
| displayText("echo8 failed"); |
| ok=false; |
| } |
| else |
| displayText("echo8 passed"); |
| |
| |
| if (ok) |
| displayText("All Passed"); |
| else |
| displayText("FAILURES"); |
| |
| return 0; |
| } |