Call xmlCleanupParser to free Libxml2 memory
[yaz-moved-to-github.git] / test / test_record_conv.c
index dff7f68..35c6527 100644 (file)
@@ -1,17 +1,17 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2010 Index Data
+ * Copyright (C) 1995-2013 Index Data
  * See the file LICENSE for details.
  */
+#if HAVE_CONFIG_H
+#include <config.h>
+#endif
+
 #include <yaz/record_conv.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_XML2
 
 #include <libxml/parser.h>
@@ -51,7 +51,7 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w)
 
 
             int r = yaz_record_conv_configure(p, ptr);
-            
+
             if (r)
             {
                 wrbuf_puts(w, yaz_record_conv_get_error(p));
@@ -61,7 +61,7 @@ yaz_record_conv_t conv_configure(const char *xmlstring, WRBUF w)
         }
         xmlFreeDoc(doc);
         return p;
-    }    
+    }
 }
 
 int conv_configure_test(const char *xmlstring, const char *expect_error,
@@ -144,7 +144,7 @@ static void tst_configure(void)
                                   "</backend>",
                                   "xslt unsupported."
                                   " YAZ compiled without XSLT support", 0));
-#endif 
+#endif
 }
 
 static int conv_convert_test(yaz_record_conv_t p,
@@ -181,7 +181,7 @@ static int conv_convert_test(yaz_record_conv_t p,
             else if (strcmp(output_expect_record, wrbuf_cstr(output_record)))
             {
                 ret = 0;
-                printf("got-output_record len=%ld: %s\n", 
+                printf("got-output_record len=%ld: %s\n",
                        (long) wrbuf_len(output_record),
                        wrbuf_cstr(output_record));
                 printf("output_expect_record len=%ld %s\n",
@@ -225,6 +225,14 @@ static void tst_convert1(void)
         "    <subfield code=\"a\">   11224466 </subfield>\n"
         "  </datafield>\n"
         "</record>\n";
+    const char *tmarcxml_rec =
+        "<r xmlns=\"http://www.indexdata.com/MARC21/turboxml\">\n"
+        "  <l>00080nam a22000498a 4500</l>\n"
+        "  <c001>   11224466 </c001>\n"
+        "  <d010 i1=\" \" i2=\" \">\n"
+        "    <sa>   11224466 </sa>\n"
+        "  </d010>\n"
+        "</r>\n";
     const char *iso2709_rec =
         "\x30\x30\x30\x38\x30\x6E\x61\x6D\x20\x61\x32\x32\x30\x30\x30\x34"
         "\x39\x38\x61\x20\x34\x35\x30\x30\x30\x30\x31\x30\x30\x31\x33\x30"
@@ -242,6 +250,7 @@ static void tst_convert1(void)
                                   "</backend>",
                                   0, &p));
     YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec));
+    YAZ_CHECK(conv_convert_test(p, tmarcxml_rec, iso2709_rec));
     yaz_record_conv_destroy(p);
 
     YAZ_CHECK(conv_configure_test("<backend>"
@@ -337,7 +346,7 @@ int main(int argc, char **argv)
 #if YAZ_HAVE_XML2
     tst_configure();
 #endif
-#if  YAZ_HAVE_XSLT 
+#if  YAZ_HAVE_XSLT
     tst_convert1();
     tst_convert2();
 #endif