You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by na...@apache.org on 2006/05/13 01:26:19 UTC

svn commit: r405942 - /webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c

Author: nadiramra
Date: Fri May 12 16:26:18 2006
New Revision: 405942

URL: http://svn.apache.org/viewcvs?rev=405942&view=rev
Log:
C support fixes/enhancements. Testcases for C bindings.

Added:
    webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c

Added: webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c
URL: http://svn.apache.org/viewcvs/webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c?rev=405942&view=auto
==============================================================================
--- webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c (added)
+++ webservices/axis/trunk/c/tests/auto_build/testcases/client/c/ComplexListsClient.c Fri May 12 16:26:18 2006
@@ -0,0 +1,166 @@
+// Copyright 2003-2004 The Apache Software Foundation.
+// (c) Copyright IBM Corp. 2004, 2005 All Rights Reserved
+// 
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// 
+//        http://www.apache.org/licenses/LICENSE-2.0
+// 
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+
+/*
+ * ComplexLists tests several things all at once.
+ *
+ * The areas being tested are:
+ * 1. AXISCPP-487 - Elements of basic XSD types do not serialize namespace declaration
+ * 2. AXISCPP-488 - Array types don't serialize namespace declarations
+ * 3. AXISCPP-489 - Serializer not removing namespaces as they go out of scope
+ *
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "CommonClientTestCode.h"
+#include "ComplexLists.h"
+
+#define ARRAYSIZE 2
+
+void printResponse(attrlisterr* ale)
+{
+    if(ale)
+    {
+        if (ale->errortext)
+            printf( "%s\n", ale->errortext );
+        else
+            printf( "ale->errortext is NULL\n" );
+
+        if (ale->errorcode)
+            printf( "%d\n", ale->errorcode );
+        else
+            printf( "ale->errorcode is NULL\n" );
+
+        if (ale->attrlist_Ref != NULL)
+        {
+            namepair ** output =ale->attrlist_Ref->item->m_Array;
+            
+            if (output[0] != NULL)
+            {
+                if (output[0]->name != NULL)
+                    printf( "%s\n", output[0]->name );
+                else
+                    printf( "ale->attrlist_Ref->item.m_Array[0]->name is NULL\n" );
+
+                if (output[0]->m_list_Ref != NULL)
+                {
+                    xsdc__string * outString = output[0]->m_list_Ref->item->m_Array;
+                    if (outString[0] && *(outString[0]))
+                        printf( "%s\n", outString[0] );
+                    else
+                        printf( "ale->attrlist_Ref->item.m_Array[0]->m_list_Ref->item.m_Array[0]\n" );
+                }
+            }
+        }
+    }
+    else
+        printf( "Deserialized response is NULL\n" );
+}
+
+int main(int argc, char* argv[])
+{
+    AXISCHANDLE ws;
+    
+    xsdc__string array[ARRAYSIZE];
+    xsdc__string array1[ARRAYSIZE];
+    xsdc__string array2[ARRAYSIZE];
+        
+    attrlisterr* ale;
+    
+    char endpoint[256];
+    const char* url="http://localhost:80/axis/ComplexLists";
+
+    m_list *   ml    = Axis_Create_m_list(0);   // xsdc__string array
+    m_list *   mlnp  = Axis_Create_m_list(0);   // used for 1st namepair item of array
+    m_list *   mlnp2 = Axis_Create_m_list(0);   // used for 2nd namepair item of array
+    attrlist   al;                              // attrlist has namepair array
+    namepair * np1   = Axis_Create_namepair(0); // namepair has m_list and name
+    namepair * np2   = Axis_Create_namepair(0); 
+    namepair_Array npArr;
+    namepair *nArray[ARRAYSIZE];
+
+    axiscAxisRegisterExceptionHandler(exceptionHandler);
+
+    if(argc>1) url = argv[1];
+
+    sprintf(endpoint, "%s", url);
+    ws = get_ComplexLists_stub(endpoint);
+
+
+    // m_list arg to numtilist
+    array[0] = "never odd or even"; // should be returned in errortext element of attrlisterr
+    array[1] = "any data string";   // add data
+    ml->item->m_Array = array;
+    ml->item->m_Size  = ARRAYSIZE;
+
+    // To set into namepair item of namepair array of attrlist arg of multilist
+    array1[0] = "Apache";
+    array1[1] = "Axis C++";
+    mlnp->item->m_Array = array1;
+    mlnp->item->m_Size  = ARRAYSIZE;
+ 
+
+    // To set into namepair item of namepair array of attrlist arg of multilist
+    array2[0] =  "Test";
+    array2[1] =  "Complex";
+    mlnp2->item->m_Array = array2;
+    mlnp2->item->m_Size  = ARRAYSIZE;
+
+    // set first namepair item to put into array
+    np1->m_list_Ref = mlnp;
+    np1->name = "namepair1";
+
+    // set second namepair item to put into array
+    np2->m_list_Ref = mlnp2;
+    np2->name = "namepair2";
+
+    // create a namepair array to add into attrlist
+    nArray[0]=np1;
+    nArray[1]=np2;
+    npArr.m_Array = nArray;
+    npArr.m_Size  = ARRAYSIZE;
+
+    // set attrlist argument
+    al.item = (&npArr);
+
+    ale = multilist(ws, ml, &al);
+    printResponse(ale);
+    Axis_Delete_attrlisterr(ale, 0);
+
+    ale = multilist(ws, (m_list*)NULL, &al);
+    printResponse(ale);
+    Axis_Delete_attrlisterr(ale, 0);
+
+    // Have nil elements in response
+    ale = multilistnil(ws, (m_list*)NULL, &al);
+    printResponse(ale);
+    Axis_Delete_attrlisterr(ale, 0);
+
+    ale = complexlist(ws, &al, "hoohah!", &al);
+    printResponse(ale);
+    Axis_Delete_attrlisterr(ale, 0);
+
+    // figure out what needs to be reclaimed
+
+    destroy_ComplexLists_stub(ws);
+    
+    printf("---------------------- TEST COMPLETE -----------------------------\n");
+
+    return 0;
+}
+