Call xmlCleanupParser to free Libxml2 memory
[yaz-moved-to-github.git] / test / test_retrieval.c
index 6983739..41997cf 100644 (file)
@@ -1,17 +1,17 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2011 Index Data
+ * Copyright (C) 1995-2013 Index Data
  * See the file LICENSE for details.
  */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <yaz/retrieval.h>
 #include <yaz/test.h>
 #include <yaz/wrbuf.h>
 #include <string.h>
 #include <yaz/log.h>
 
-#if HAVE_CONFIG_H
-#include <config.h>
-#endif
-
 #if YAZ_HAVE_XSLT
 
 #include <libxml/parser.h>
@@ -49,7 +49,7 @@ yaz_retrieval_t conv_configure(const char *xmlstring, WRBUF w)
         else
         {
             int r = yaz_retrieval_configure(p, ptr);
-            
+
             if (r)
             {
                 wrbuf_puts(w, yaz_retrieval_get_error(p));
@@ -59,7 +59,7 @@ yaz_retrieval_t conv_configure(const char *xmlstring, WRBUF w)
         }
         xmlFreeDoc(doc);
         return p;
-    }    
+    }
 }
 
 int conv_configure_test(const char *xmlstring, const char *expect_error,
@@ -102,10 +102,10 @@ int conv_configure_test(const char *xmlstring, const char *expect_error,
 
 static void tst_configure(void)
 {
-    YAZ_CHECK(conv_configure_test("<bad", 
+    YAZ_CHECK(conv_configure_test("<bad",
                                   "xmlParseMemory", 0));
 
-    YAZ_CHECK(conv_configure_test("<bad/>", 
+    YAZ_CHECK(conv_configure_test("<bad/>",
                                   "Expected element <retrievalinfo>", 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo/>", 0, 0));
@@ -121,7 +121,7 @@ static void tst_configure(void)
 
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " unknown=\"unknown\""
                                   ">"
                                   "</retrieval>"
@@ -131,7 +131,7 @@ static void tst_configure(void)
                                   "'unknown'", 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"unknown_synt\""
                                   ">"
                                   "</retrieval>"
@@ -140,14 +140,14 @@ static void tst_configure(void)
                                   "value syntax='unknown_synt'", 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   "/>"
                                   "</retrievalinfo>",
                                   0, 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " name=\"marcxml\"/>"
                                   "</retrievalinfo>",
@@ -155,9 +155,9 @@ static void tst_configure(void)
 
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
-                                  " name=\"marcxml\"" 
+                                  " name=\"marcxml\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                   "/>"
                                   "</retrievalinfo>",
@@ -166,18 +166,18 @@ static void tst_configure(void)
 
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                   " name=\"marcxml\">"
                                   "<convert/>"
-                                  "</retrieval>" 
+                                  "</retrieval>"
                                   "</retrievalinfo>",
                                   "Element <retrieval>: expected zero or one element "
                                   "<backend>, got <convert>", 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                   " name=\"marcxml\">"
@@ -190,7 +190,7 @@ static void tst_configure(void)
                                   " got 'schema'", 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                   " name=\"marcxml\">"
@@ -202,7 +202,7 @@ static void tst_configure(void)
                                   0, 0));
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                   " name=\"marcxml\">"
@@ -216,7 +216,7 @@ static void tst_configure(void)
 
 
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
-                                  "<retrieval" 
+                                  "<retrieval"
                                   " syntax=\"usmarc\""
                                   " identifier=\"info:srw/schema/1/marcxml-v1.1\""
                                     " name=\"marcxml\">"
@@ -262,6 +262,25 @@ static void tst_configure(void)
                                   "Element <marc inputformat='not-existent'>:  Unsupported"
                                   " input format defined by attribute value", 0));
 
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval syntax=\"usmarc\">"
+                                  "<backend syntax=\"xml\" name=\"dc\">"
+                                  "<xslt stylesheet=\"test_record_conv.xsl\"/>"
+                                  "<marc"
+                                  " inputcharset=\"utf-8\""
+                                  " outputcharset=\"marc-8\""
+                                  " inputformat=\"xml\""
+                                  " outputformat=\"marc\""
+                                  "/>"
+                                  "</backend>"
+                                  "<backend/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  "Element <retrieval>: "
+                                  "only one <backend> allowed", 0));
+
+
     YAZ_CHECK(conv_configure_test("<retrievalinfo>"
                                   "<retrieval syntax=\"usmarc\">"
                                   "<backend syntax=\"xml\" name=\"dc\">"