1 /* This file is part of the YAZ toolkit.
2 * Copyright (C) 1995-2012 Index Data
3 * See the file LICENSE for details.
15 #include <libxml/parser.h>
17 static void tst_srw(void)
19 const char *charset = 0;
20 char *content_buf = 0;
23 ODR o = odr_createmem(ODR_ENCODE);
24 Z_SOAP_Handler h[2] = {
25 {"http://www.loc.gov/zing/srw/", 0, (Z_SOAP_fun) yaz_srw_codec},
28 Z_SRW_PDU *sr = yaz_srw_get(o, Z_SRW_searchRetrieve_request);
29 Z_SOAP *p = (Z_SOAP *) odr_malloc(o, sizeof(*p));
35 sr->u.request->query.cql = "jordb" "\xe6" "r";
37 sr->u.request->query.cql = "jordbaer";
40 p->which = Z_SOAP_generic;
41 p->u.generic = (Z_SOAP_Generic *) odr_malloc(o, sizeof(*p->u.generic));
45 p->ns = "http://schemas.xmlsoap.org/soap/envelope/";
47 ret = z_soap_codec_enc(o, &p, &content_buf, &content_len, h, charset);
49 YAZ_CHECK(ret == 0); /* codec failed ? */
53 static void tst_array_to_uri(void)
55 ODR odr = odr_createmem(ODR_ENCODE);
61 r = yaz_uri_to_array("&", odr, &names, &values);
65 YAZ_CHECK(names[0] == 0);
66 YAZ_CHECK(values[0] == 0);
68 r = yaz_uri_to_array("&&", odr, &names, &values);
72 yaz_array_to_uri(&query_string, odr, names, values);
73 YAZ_CHECK(!strcmp(query_string, ""));
75 YAZ_CHECK(names[0] == 0);
76 YAZ_CHECK(values[0] == 0);
78 r = yaz_uri_to_array("a=AA&bb=%42B", odr, &names, &values);
82 YAZ_CHECK(names[0] && !strcmp(names[0], "a"));
83 YAZ_CHECK(values[0] && !strcmp(values[0], "AA"));
85 YAZ_CHECK(names[1] && !strcmp(names[1], "bb"));
86 YAZ_CHECK(values[1] && !strcmp(values[1], "BB"));
88 YAZ_CHECK(names[2] == 0);
89 YAZ_CHECK(values[2] == 0);
91 yaz_array_to_uri(&query_string, odr, names, values);
92 YAZ_CHECK(!strcmp(query_string, "a=AA&bb=BB"));
94 r = yaz_uri_to_array("a=AA&bb&x", odr, &names, &values);
98 YAZ_CHECK(names[0] && !strcmp(names[0], "a"));
99 YAZ_CHECK(values[0] && !strcmp(values[0], "AA"));
101 YAZ_CHECK(names[1] && !strcmp(names[1], "bb"));
102 YAZ_CHECK(values[1] && !strcmp(values[1], ""));
104 YAZ_CHECK(names[2] && !strcmp(names[2], "x"));
105 YAZ_CHECK(values[2] && !strcmp(values[1], ""));
107 YAZ_CHECK(names[3] == 0);
108 YAZ_CHECK(values[3] == 0);
110 yaz_array_to_uri(&query_string, odr, names, values);
111 YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x="));
114 r = yaz_uri_to_array("a=AA&bb=&x=", odr, &names, &values);
118 YAZ_CHECK(names[0] && !strcmp(names[0], "a"));
119 YAZ_CHECK(values[0] && !strcmp(values[0], "AA"));
121 YAZ_CHECK(names[1] && !strcmp(names[1], "bb"));
122 YAZ_CHECK(values[1] && !strcmp(values[1], ""));
124 YAZ_CHECK(names[2] && !strcmp(names[2], "x"));
125 YAZ_CHECK(values[2] && !strcmp(values[1], ""));
127 YAZ_CHECK(names[3] == 0);
128 YAZ_CHECK(values[3] == 0);
130 yaz_array_to_uri(&query_string, odr, names, values);
131 YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x="));
134 r = yaz_uri_to_array("a=AA&&&bb&x&&", odr, &names, &values);
138 YAZ_CHECK(names[0] && !strcmp(names[0], "a"));
139 YAZ_CHECK(values[0] && !strcmp(values[0], "AA"));
141 YAZ_CHECK(names[1] && !strcmp(names[1], "bb"));
142 YAZ_CHECK(values[1] && !strcmp(values[1], ""));
144 YAZ_CHECK(names[2] && !strcmp(names[2], "x"));
145 YAZ_CHECK(values[2] && !strcmp(values[2], ""));
147 YAZ_CHECK(names[3] == 0);
148 YAZ_CHECK(values[3] == 0);
150 yaz_array_to_uri(&query_string, odr, names, values);
151 YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x="));
157 int main(int argc, char **argv)
159 YAZ_CHECK_INIT(argc, argv);
170 * c-file-style: "Stroustrup"
171 * indent-tabs-mode: nil
173 * vim: shiftwidth=4 tabstop=8 expandtab