2 * Copyright (C) 2005-2006, Index Data ApS
3 * See the file LICENSE for details.
5 * $Id: tst_retrieval.c,v 1.3 2006-05-07 14:48:25 adam Exp $
8 #include <yaz/retrieval.h>
10 #include <yaz/wrbuf.h>
19 #include <libxml/parser.h>
20 #include <libxml/tree.h>
22 yaz_retrieval_t conv_configure(const char *xmlstring, WRBUF w)
24 xmlDocPtr doc = xmlParseMemory(xmlstring, strlen(xmlstring));
27 wrbuf_printf(w, "xmlParseMemory");
32 xmlNodePtr ptr = xmlDocGetRootElement(doc);
33 yaz_retrieval_t p = yaz_retrieval_create();
37 const char *srcdir = getenv("srcdir");
39 yaz_retrieval_set_path(p, srcdir);
43 wrbuf_printf(w, "xmlDocGetRootElement");
44 yaz_retrieval_destroy(p);
49 wrbuf_printf(w, "yaz_retrieval_create");
53 int r = yaz_retrieval_configure(p, ptr);
57 wrbuf_puts(w, yaz_retrieval_get_error(p));
58 yaz_retrieval_destroy(p);
67 int conv_configure_test(const char *xmlstring, const char *expect_error,
70 WRBUF w = wrbuf_alloc();
73 yaz_retrieval_t p = conv_configure(xmlstring, w);
77 if (expect_error && !strcmp(wrbuf_buf(w), expect_error))
82 printf("%.*s\n", wrbuf_len(w), wrbuf_buf(w));
90 yaz_retrieval_destroy(p);
97 yaz_retrieval_destroy(p);
105 static void tst_configure()
107 YAZ_CHECK(conv_configure_test("<bad",
108 "xmlParseMemory", 0));
110 YAZ_CHECK(conv_configure_test("<bad/>",
111 "Missing 'retrievalinfo' element", 0));
113 YAZ_CHECK(conv_configure_test("<retrievalinfo/>", 0, 0));
115 YAZ_CHECK(conv_configure_test("<retrievalinfo><bad/></retrievalinfo>",
117 " Expected 'retrieval'", 0));
119 YAZ_CHECK(conv_configure_test("<retrievalinfo><retrieval/>"
120 "</retrievalinfo>", 0, 0));
122 YAZ_CHECK(conv_configure_test("<retrievalinfo>"
126 "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
128 " inputcharset=\"utf-8\""
129 " outputcharset=\"marc-8\""
130 " inputformat=\"xml\""
131 " outputformat=\"marc\""
138 YAZ_CHECK(conv_configure_test("<retrievalinfo>"
141 "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
143 " inputcharset=\"utf-8\""
144 " outputcharset=\"marc-8\""
145 " inputformat=\"xml\""
146 " outputformat=\"marc\""
152 "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
154 " inputcharset=\"utf-8\""
155 " outputcharset=\"marc-8\""
156 " inputformat=\"xml\""
157 " outputformat=\"marc\""
165 YAZ_CHECK(conv_configure_test("<retrievalinfo>"
168 " schema=\"marcxml\""
169 " identifier=\"info:srw/schema/1/marcxml-v1.1\""
176 YAZ_CHECK(conv_configure_test("<retrievalinfo>"
178 " syntax=\"unknown_synt\""
183 "Bad syntax 'unknown_synt'", 0));
185 YAZ_CHECK(conv_configure_test("<retrievalinfo>"
187 " backendsyntax=\"unknown_synt\""
192 "Bad backendsyntax 'unknown_synt'", 0));
198 int main(int argc, char **argv)
200 YAZ_CHECK_INIT(argc, argv);
210 * indent-tabs-mode: nil
212 * vim: shiftwidth=4 tabstop=8 expandtab