/Users/maurits/Documents/studie/afstuderen/biosphere/tests/test_xml.c

Go to the documentation of this file.
00001 /*
00002  * Author: MA Hartman
00003  * Date: mar 8, 2007
00004  * 
00005  * Function:
00006  * XML translation testing program.
00007  * 
00008  * License information:
00009  * 
00010  * Copyright (c) 2006 Maurits Hartman
00011  *
00012  * Permission is hereby granted, free of charge, to any person
00013  * obtaining a copy of this software and associated documentation
00014  * files (the "Software"), to deal in the Software without
00015  * restriction, including without limitation the rights to use,
00016  * copy, modify, merge, publish, distribute, sublicense, and/or sell
00017  * copies of the Software, and to permit persons to whom the
00018  * Software is furnished to do so, subject to the following
00019  * conditions:
00020  * 
00021  * The above copyright notice and this permission notice shall be
00022  * included in all copies or substantial portions of the Software.
00023  * 
00024  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00025  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
00026  * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00027  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
00028  * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
00029  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
00030  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
00031  * OTHER DEALINGS IN THE SOFTWARE.
00032  * 
00033  */
00034 
00035 #include <xml.h>
00036 #include <type.h>
00037 
00038 #include <apr_pools.h>
00039 #include <apr_strings.h>
00040 #include <string.h>
00041 #include <stdio.h>
00042 
00043 
00044 static void create_request(bs_service_request **req, apr_pool_t *mp)
00045 {
00046         char *bindata = "this is just random binary data.";
00047         bs_byte uuid[] = "XXXXXXXXXXXXXXXX";
00048         char *data2 = "1234567";
00049         char *data3 = "This is just custom data!";
00050         bs_service_request *r = NULL;
00051         bs_message_instance *mi = NULL;
00052         bs_data_type *t1, *t2, *t3;
00053         bs_part_instance *p1, *p2, *p3;
00054         
00055         t1 = new_bs_data_type(mp, "bs_string");
00056         t2 = new_bs_data_type(mp, "bs_uint32");
00057         t3 = new_bs_data_type(mp, "bs_custom");
00058         p1 = new_bs_part_instance(mp, "part1", t1, bindata, strlen(bindata));
00059         p2 = new_bs_part_instance(mp, "part2", t2, data2, strlen(data2));
00060         p3 = new_bs_part_instance(mp, "part3", t3, data3, strlen(data3));
00061         mi = new_bs_message_instance(mp, "message", 3);
00062         mi->parts[0] = p1;
00063         mi->parts[1] = p2;
00064         mi->parts[2] = p3;
00065         r = new_bs_service_request(mp, uuid, "test1",
00066                         "test2", "test3", mi);
00067         *req = r;
00068 }
00069 
00070 
00071 int main(int argc, char *argv[])
00072 {
00073         apr_pool_t *mp;
00074         bs_status rv;
00075         bs_service_request *req, *req2;
00076         char *buf;
00077         bs_uint64 size;
00078         unsigned type;
00079         
00080         apr_initialize();
00081         apr_pool_create(&mp, NULL);
00082         create_request(&req, mp);
00083         
00084         /* Parse to XML */
00085         rv = xlate_request_to_xml(&buf, &size, req, mp);
00086         if (rv != BS_OK) return 1;
00087         
00088         /* Translate back to format: */
00089         rv = xlate_from_xml(buf, size, (void **) &req2, &type, mp);
00090         if (rv != BS_OK || type != SERVICE_REQUEST_FROM_XML) return 2;
00091         
00092         /* Compare: */
00093         if (apr_strnatcmp(req->service, req2->service) != 0) return 3;
00094         if (apr_strnatcmp(req->port, req2->port) != 0) return 4;
00095         if (apr_strnatcmp(req->operation, req2->operation) != 0) return 5;
00096         if (apr_strnatcmp(req->operation, req2->operation) != 0) return 5;
00097         if (apr_strnatcmp(req->input->name, req2->input->name) != 0) return 6;
00098         if (req->input->num_parts != req2->input->num_parts) return 7;
00099         
00100         if (apr_strnatcmp(req->input->parts[0]->name, req2->input->parts[0]->name) != 0) return 8;
00101         if (apr_strnatcmp(req->input->parts[1]->name, req2->input->parts[1]->name) != 0) return 9;
00102         if (apr_strnatcmp(req->input->parts[2]->name, req2->input->parts[2]->name) != 0) return 10;
00103         
00104         if (apr_strnatcmp(req->input->parts[0]->type->name, req2->input->parts[0]->type->name) != 0) return 11;
00105         if (apr_strnatcmp(req->input->parts[1]->type->name, req2->input->parts[1]->type->name) != 0) return 12;
00106         if (apr_strnatcmp(req->input->parts[2]->type->name, req2->input->parts[2]->type->name) != 0) return 13;
00107         
00108         if (apr_strnatcmp(req->input->parts[0]->data, req2->input->parts[0]->data) != 0) return 14;
00109         if (apr_strnatcmp(req->input->parts[1]->data, req2->input->parts[1]->data) != 0) return 15;
00110         if (apr_strnatcmp(req->input->parts[2]->data, req2->input->parts[2]->data) != 0) return 16;
00111         
00112         if (req->input->parts[0]->size != req2->input->parts[0]->size) return 17;
00113         if (req->input->parts[1]->size != req2->input->parts[1]->size) return 18;
00114         if (req->input->parts[2]->size != req2->input->parts[2]->size) return 19;
00115         
00116         
00117         apr_pool_destroy(mp);
00118         apr_terminate();
00119         return 0;       
00120 }

Generated on Tue Jul 17 09:50:53 2007 for Bio-SPHERE by  doxygen 1.5.1