// gSOAP v2 Interop B test round 2 #include "soapH.h" int main(int argc, char **argv) { struct soap soap; int i, g; xsd__string s = "Hello World! <>&"; xsd__int n = 2147483647; xsd__float f = 3.40282e+38; struct ArrayOfstring a; struct ArrayOfstring2D aai, aao; struct s__SOAPStruct sti; struct ns__echoStructAsSimpleTypesResponse Ro; struct ns__echoSimpleTypesAsStructResponse Rsto; struct s__SOAPStructStruct ssti; struct ns__echoNestedStructResponse Rssto; struct s__SOAPArrayStruct sati; struct ns__echoNestedArrayResponse Rsato; FILE *fd = fopen("interop2Bfaults.html", "a"); soap_init(&soap); fprintf(fd, ""); soap.send_timeout = 30; soap.recv_timeout = 30; sti.varString = "Hello"; sti.varInt = &n; sti.varFloat = &f; ssti.varString = "SOAP!"; ssti.varInt = &n; ssti.varFloat = &f; ssti.varStruct = &sti; a.__size = 5; a.__offset = 2; a.__ptr = (char**)malloc(a.__size*sizeof(char*)); a.__ptr[0] = "Interop"; a.__ptr[1] = "Test"; a.__ptr[2] = "Round"; a.__ptr[3] = "2"; a.__ptr[4] = a.__ptr[1]; aai.__size[0] = 2; aai.__size[1] = 3; aai.__offset[0] = 0; aai.__offset[1] = 0; aai.__ptr = (char**)malloc(aai.__size[0]*aai.__size[1]*sizeof(char*)); aai.__ptr[0] = "Interop Test"; aai.__ptr[1] = NULL; aai.__ptr[2] = "Round"; aai.__ptr[3] = "2"; aai.__ptr[4] = a.__ptr[1]; aai.__ptr[5] = NULL; sati.varString = a.__ptr[0]; sati.varInt = &n; sati.varFloat = &f; sati.varArray = a; if (argc < 2) return -1; if (soap_call_ns__echoStructAsSimpleTypes(&soap, argv[1], "http://soapinterop.org/", sti, Ro)) { printf("FAULT\n", argv[1]); fprintf(fd, "
", argv[1]);
    soap_print_fault(&soap, fd);
    soap_print_fault_location(&soap, fd);
    fprintf(fd, "

"); } else if (!Ro._outputString || strcmp(sti.varString, Ro._outputString) || !Ro._outputInteger || *sti.varInt != *Ro._outputInteger || !Ro._outputFloat || *sti.varFloat != *Ro._outputFloat) { printf("FAIL\n", argv[1]); fprintf(fd, "Structs differ. Input:
%s\n%d\n%.7G
Response:
%s\n%d\n%.7G

", argv[1], sti.varString, *sti.varInt, *sti.varFloat, Ro._outputString?Ro._outputString:"NULL", Ro._outputInteger?*Ro._outputInteger:0, Ro._outputFloat?*Ro._outputFloat:0); } else printf("PASS\n"); fflush(stdout); if (soap_call_ns__echoSimpleTypesAsStruct(&soap, argv[1], "http://soapinterop.org/", s, &n, &f, Rsto)) { printf("FAULT\n", argv[1]); fprintf(fd, "
", argv[1]);
    soap_print_fault(&soap, fd);
    soap_print_fault_location(&soap, fd);
    fprintf(fd, "

"); } else if (!Rsto._return.varString || strcmp(s, Rsto._return.varString) || !Rsto._return.varInt || n != *Rsto._return.varInt || !Rsto._return.varFloat || f != *Rsto._return.varFloat) { printf("FAIL\n", argv[1]); fprintf(fd, "Structs differ. Input:
%s\n%d\n%.7G
Response:
%s\n%d\n%.7G

", argv[1], s, n, f, Rsto._return.varString, Rsto._return.varInt?*Rsto._return.varInt:0, Rsto._return.varFloat?*Rsto._return.varFloat:0.0); } else printf("PASS\n"); fflush(stdout); if (soap_call_ns__echo2DStringArray(&soap, argv[1], "http://soapinterop.org/", aai, aao)) { printf("FAULT\n", argv[1]); fprintf(fd, "
", argv[1]);
    soap_print_fault(&soap, fd);
    soap_print_fault_location(&soap, fd);
    fprintf(fd, "

"); } else { g = 0; if (aai.__size[0] != aao.__size[0] || aai.__size[1] != aao.__size[1] || !aao.__ptr) g = 1; else for (i = 0; i < aai.__size[0]*aai.__size[1]; i++) if (aai.__ptr[i] && (!aao.__ptr[i] || strcmp(aai.__ptr[i], aao.__ptr[i]))) g = 1; if (g) { printf("FAIL\n", argv[1]); fprintf(fd, "2D string arrays differ. Input:
", argv[1]);
      for (i = 0; i < aai.__size[0]*aai.__size[1]; i++)
        fprintf(fd, "%s\n", aai.__ptr[i]);
      fprintf(fd, "
Response:
");
      for (i = 0; i < aao.__size[0]*aao.__size[1]; i++)
        fprintf(fd, "%s\n", aao.__ptr[i]);
      fprintf(fd, "
\n"); } else printf("PASS\n"); } fflush(stdout); if (soap_call_ns__echoNestedStruct(&soap, argv[1], "http://soapinterop.org/", ssti, Rssto)) { printf("FAULT\n", argv[1]); fprintf(fd, "
", argv[1]);
    soap_print_fault(&soap, fd);
    soap_print_fault_location(&soap, fd);
    fprintf(fd, "

"); } else if (!Rssto._return.varString || strcmp(ssti.varString, Rssto._return.varString) || !Rssto._return.varInt || *ssti.varInt != *Rssto._return.varInt || !Rssto._return.varFloat || *ssti.varFloat != *Rssto._return.varFloat || !Rssto._return.varStruct || !Rssto._return.varStruct->varString || strcmp(ssti.varStruct->varString, Rssto._return.varStruct->varString) || !Rssto._return.varStruct->varInt || *ssti.varStruct->varInt != *Rssto._return.varStruct->varInt || !Rssto._return.varStruct->varFloat || *ssti.varStruct->varFloat != *Rssto._return.varStruct->varFloat) { printf("FAIL\n", argv[1]); fprintf(fd, "Nested structs differ.
", argv[1]); } else printf("PASS\n"); fflush(stdout); if (soap_call_ns__echoNestedArray(&soap, argv[1], "http://soapinterop.org/", sati, Rsato)) { printf("FAULT\n", argv[1]); fprintf(fd, "
", argv[1]);
    soap_print_fault(&soap, fd);
    soap_print_fault_location(&soap, fd);
    fprintf(fd, "

"); } else if (!Rsato._return.varString || strcmp(sati.varString, Rsato._return.varString) || !Rsato._return.varInt || *sati.varInt != *Rsato._return.varInt || !Rsato._return.varFloat || *sati.varFloat != *Rsato._return.varFloat || sati.varArray.__size+sati.varArray.__offset != Rsato._return.varArray.__size+Rsato._return.varArray.__offset) { printf("FAIL\n", argv[1]); fprintf(fd, "Nested struct arrays differ
", argv[1]); } else { g = 0; for (i = sati.varArray.__offset; i < sati.varArray.__size+sati.varArray.__offset; i++) if (!Rsato._return.varArray.__ptr[i-Rsato._return.varArray.__offset] || strcmp(sati.varArray.__ptr[i-sati.varArray.__offset], Rsato._return.varArray.__ptr[i-Rsato._return.varArray.__offset])) g = 1; if (g) { printf("FAIL\n", argv[1]); fprintf(fd, "Nested struct arrays differ.
", argv[1]); } else printf("PASS\n"); } fflush(stdout); fprintf(fd, ""); fclose(fd); return 0; } struct Namespace namespaces[] = { {"SOAP-ENV", "http://schemas.xmlsoap.org/soap/envelope/"}, {"SOAP-ENC", "http://schemas.xmlsoap.org/soap/encoding/"}, //{"SOAP-ENV", "http://www.w3.org/2002/06/soap-envelope"}, // SOAP 1.2 //{"SOAP-ENC", "http://www.w3.org/2002/06/soap-encoding"}, // SOAP 1.2 {"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"}, {"ns", "http://soapinterop.org/"}, {"s", "http://soapinterop.org/xsd"}, {NULL, NULL} };