00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
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
00085 rv = xlate_request_to_xml(&buf, &size, req, mp);
00086 if (rv != BS_OK) return 1;
00087
00088
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
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 }