Revert
[yaz-moved-to-github.git] / test / tst_retrieval.c
index 7482535..32e9782 100644 (file)
@@ -2,13 +2,15 @@
  * Copyright (C) 2005-2006, Index Data ApS
  * See the file LICENSE for details.
  *
- * $Id: tst_retrieval.c,v 1.1 2006-05-04 20:00:45 adam Exp $
+ * $Id: tst_retrieval.c,v 1.5 2006-05-09 13:39:47 adam Exp $
  *
  */
 #include <yaz/retrieval.h>
 #include <yaz/test.h>
 #include <yaz/wrbuf.h>
 #include <string.h>
+#include <yaz/log.h>
+#include <yaz/libxml2_error.h>
 
 #if HAVE_CONFIG_H
 #include <config.h>
@@ -104,22 +106,52 @@ int conv_configure_test(const char *xmlstring, const char *expect_error,
 
 static void tst_configure()
 {
-    YAZ_CHECK(conv_configure_test("<bad", "xmlParseMemory", 0));
-#if 0
-    YAZ_CHECK(conv_configure_test("<bad/>", "Missing 'convert' element", 0));
-    YAZ_CHECK(conv_configure_test("<convert/>", 0, 0));
-    YAZ_CHECK(conv_configure_test("<convert><bad/></convert>",
+    YAZ_CHECK(conv_configure_test("<bad", 
+                                  "xmlParseMemory", 0));
+
+    YAZ_CHECK(conv_configure_test("<bad/>", 
+                                  "Missing 'retrievalinfo' element", 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo/>", 0, 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo><bad/></retrievalinfo>",
                                   "Bad element 'bad'."
-                                  "Expected marc, xslt, ..", 0));
-    YAZ_CHECK(conv_configure_test("<convert>"
+                                  " Expected 'retrieval'", 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo><retrieval/>"
+                                  "</retrievalinfo>", 
+                                  "Missing 'syntax' attribute", 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval syntax=\"usmarc\">\n"
+                                  "  "
+                                  "<convert>"
                                   "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
                                   "<marc"
-                                  " inputcharset=\"marc-8\""
+                                  " inputcharset=\"utf-8\""
+                                  " outputcharset=\"marc-8\""
+                                  " inputformat=\"xml\""
+                                  " outputformat=\"marc\""
+                                  "/>"
+                                  "</convert>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  0, 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval syntax=\"usmarc\">"
+                                  "<convert>"
+                                  "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
+                                  "<marc"
+                                  " inputcharset=\"utf-8\""
                                   " outputcharset=\"marc-8\""
+                                  " inputformat=\"xml\""
+                                  " outputformat=\"marc\""
                                   "/>"
-                                  "</convert>",
-                                  "Attribute 'inputformat' required", 0));
-    YAZ_CHECK(conv_configure_test("<convert>"
+                                  "</convert>"
+                                  "</retrieval>"
+                                  "<retrieval syntax=\"usmarc\">"
+                                  "<convert>"
                                   "<xslt stylesheet=\"tst_record_conv.xsl\"/>"
                                   "<marc"
                                   " inputcharset=\"utf-8\""
@@ -127,9 +159,70 @@ static void tst_configure()
                                   " inputformat=\"xml\""
                                   " outputformat=\"marc\""
                                   "/>"
-                                  "</convert>",
+                                  "</convert>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
                                   0, 0));
-#endif
+
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval" 
+                                  " syntax=\"usmarc\""
+                                  " name=\"marcxml\"" 
+                                  " identifier=\"info:srw/schema/1/marcxml-v1.1\""
+                                  ">"
+                                  "<convert/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  0, 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval" 
+                                  " syntax=\"usmarc\""
+                                  " name=\"marcxml\""
+                                  " backendsyntax=\"usmarc\""
+                                  " backendname=\"marcxml\""
+                                  " identifier=\"info:srw/schema/1/marcxml-v1.1\""
+                                  ">"
+                                  "<convert/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  0, 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval" 
+                                  " syntax=\"usmarc\""
+                                  " name=\"marcxml\""
+                                  " backendsyntax=\"usmarc\""
+                                  " backendschema=\"marcxml\""
+                                  " identifier=\"info:srw/schema/1/marcxml-v1.1\""
+                                  ">"
+                                  "<convert/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  "Bad attribute 'backendschema'."
+                                  " Use 'backendname' instead", 
+                                  0));
+
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval" 
+                                  " syntax=\"unknown_synt\""
+                                  ">"
+                                  "<convert/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  "Bad syntax 'unknown_synt'", 0));
+
+    YAZ_CHECK(conv_configure_test("<retrievalinfo>"
+                                  "<retrieval" 
+                                  " backendsyntax=\"unknown_synt\""
+                                  ">"
+                                  "<convert/>"
+                                  "</retrieval>"
+                                  "</retrievalinfo>",
+                                  "Bad backendsyntax 'unknown_synt'", 0));
+
 }
 
 #endif
@@ -137,6 +230,9 @@ static void tst_configure()
 int main(int argc, char **argv)
 {
     YAZ_CHECK_INIT(argc, argv);
+
+    libxml2_error_to_yazlog(0 /* disable it */, "");
+
 #if HAVE_XSLT
     tst_configure();
 #endif