X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=test%2Ftest_soap2.c;h=5120686fe37322525d9242c56ce38ae5b8b00d9e;hp=620f5f3e972320a69a88d073e8e42fe4002181d5;hb=9a50808021be48e8ff272f762b9f8245330a79e4;hpb=3107ce3a34993d2f784387f227a50343fff83bbc diff --git a/test/test_soap2.c b/test/test_soap2.c index 620f5f3..5120686 100644 --- a/test/test_soap2.c +++ b/test/test_soap2.c @@ -1,7 +1,10 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2010 Index Data + * Copyright (C) Index Data * See the file LICENSE for details. */ +#if HAVE_CONFIG_H +#include +#endif #include #include @@ -29,9 +32,9 @@ static void tst_srw(void) YAZ_CHECK(sr); YAZ_CHECK(p); #if 0 - sr->u.request->query.cql = "jordb" "\xe6" "r"; + sr->u.request->query = "jordb" "\xe6" "r"; #else - sr->u.request->query.cql = "jordbaer"; + sr->u.request->query = "jordbaer"; #endif p->which = Z_SOAP_generic; @@ -47,6 +50,110 @@ static void tst_srw(void) } #endif +static void tst_array_to_uri(void) +{ + ODR odr = odr_createmem(ODR_ENCODE); + char **names; + char **values; + char *query_string; + int r; + + r = yaz_uri_to_array("&", odr, &names, &values); + YAZ_CHECK_EQ(r, 0); + if (r == 0) + { + YAZ_CHECK(names[0] == 0); + YAZ_CHECK(values[0] == 0); + } + r = yaz_uri_to_array("&&", odr, &names, &values); + YAZ_CHECK_EQ(r, 0); + if (r == 0) + { + yaz_array_to_uri(&query_string, odr, names, values); + YAZ_CHECK(!strcmp(query_string, "")); + + YAZ_CHECK(names[0] == 0); + YAZ_CHECK(values[0] == 0); + } + r = yaz_uri_to_array("a=AA&bb=%42B", odr, &names, &values); + YAZ_CHECK_EQ(r, 2); + if (r == 2) + { + YAZ_CHECK(names[0] && !strcmp(names[0], "a")); + YAZ_CHECK(values[0] && !strcmp(values[0], "AA")); + + YAZ_CHECK(names[1] && !strcmp(names[1], "bb")); + YAZ_CHECK(values[1] && !strcmp(values[1], "BB")); + + YAZ_CHECK(names[2] == 0); + YAZ_CHECK(values[2] == 0); + + yaz_array_to_uri(&query_string, odr, names, values); + YAZ_CHECK(!strcmp(query_string, "a=AA&bb=BB")); + } + r = yaz_uri_to_array("a=AA&bb&x", odr, &names, &values); + YAZ_CHECK_EQ(r, 3); + if (r == 3) + { + YAZ_CHECK(names[0] && !strcmp(names[0], "a")); + YAZ_CHECK(values[0] && !strcmp(values[0], "AA")); + + YAZ_CHECK(names[1] && !strcmp(names[1], "bb")); + YAZ_CHECK(values[1] && !strcmp(values[1], "")); + + YAZ_CHECK(names[2] && !strcmp(names[2], "x")); + YAZ_CHECK(values[2] && !strcmp(values[1], "")); + + YAZ_CHECK(names[3] == 0); + YAZ_CHECK(values[3] == 0); + + yaz_array_to_uri(&query_string, odr, names, values); + YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x=")); + } + + r = yaz_uri_to_array("a=AA&bb=&x=", odr, &names, &values); + YAZ_CHECK_EQ(r, 3); + if (r == 3) + { + YAZ_CHECK(names[0] && !strcmp(names[0], "a")); + YAZ_CHECK(values[0] && !strcmp(values[0], "AA")); + + YAZ_CHECK(names[1] && !strcmp(names[1], "bb")); + YAZ_CHECK(values[1] && !strcmp(values[1], "")); + + YAZ_CHECK(names[2] && !strcmp(names[2], "x")); + YAZ_CHECK(values[2] && !strcmp(values[1], "")); + + YAZ_CHECK(names[3] == 0); + YAZ_CHECK(values[3] == 0); + + yaz_array_to_uri(&query_string, odr, names, values); + YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x=")); + } + + r = yaz_uri_to_array("a=AA&&&bb&x&&", odr, &names, &values); + YAZ_CHECK_EQ(r, 3); + if (r == 3) + { + YAZ_CHECK(names[0] && !strcmp(names[0], "a")); + YAZ_CHECK(values[0] && !strcmp(values[0], "AA")); + + YAZ_CHECK(names[1] && !strcmp(names[1], "bb")); + YAZ_CHECK(values[1] && !strcmp(values[1], "")); + + YAZ_CHECK(names[2] && !strcmp(names[2], "x")); + YAZ_CHECK(values[2] && !strcmp(values[2], "")); + + YAZ_CHECK(names[3] == 0); + YAZ_CHECK(values[3] == 0); + + yaz_array_to_uri(&query_string, odr, names, values); + YAZ_CHECK(!strcmp(query_string, "a=AA&bb=&x=")); + } + + odr_destroy(odr); +} + int main(int argc, char **argv) { YAZ_CHECK_INIT(argc, argv); @@ -54,6 +161,7 @@ int main(int argc, char **argv) LIBXML_TEST_VERSION; tst_srw(); #endif + tst_array_to_uri(); YAZ_CHECK_TERM; } /*