Beef up test a bit
[yaz-moved-to-github.git] / test / tst_record_conv.c
index bd1a770..42518b7 100644 (file)
@@ -1,9 +1,6 @@
-/*
- * Copyright (C) 2005-2006, Index Data ApS
+/* This file is part of the YAZ toolkit.
+ * Copyright (C) 1995-2008 Index Data
  * See the file LICENSE for details.
- *
- * $Id: tst_record_conv.c,v 1.12 2006-12-12 10:41:39 marc Exp $
- *
  */
 #include <yaz/record_conv.h>
 #include <yaz/test.h>
@@ -78,12 +75,12 @@ int conv_configure_test(const char *xmlstring, const char *expect_error,
 
     if (!p)
     {
-        if (expect_error && !strcmp(wrbuf_buf(w), expect_error))
+        if (expect_error && !strcmp(wrbuf_cstr(w), expect_error))
             ret = 1;
         else
         {
             ret = 0;
-            printf("%.*s\n", wrbuf_len(w), wrbuf_buf(w));
+            printf("%s\n", wrbuf_cstr(w));
         }
     }
     else
@@ -100,7 +97,7 @@ int conv_configure_test(const char *xmlstring, const char *expect_error,
         if (p)
             yaz_record_conv_destroy(p);
 
-    wrbuf_free(w, 1);
+    wrbuf_destroy(w);
     return ret;
 }
 
@@ -182,32 +179,36 @@ static int conv_convert_test(yaz_record_conv_t p,
             {
                 ret = 0;
             }
-            else if (strlen(output_expect_record) != wrbuf_len(output_record))
-            {
-                int expect_len = strlen(output_expect_record);
-                ret = 0;
-                printf("output_record expect-len=%d got-len=%d\n", expect_len,
-                       wrbuf_len(output_record));
-                printf("got-output_record = %.*s\n",
-                       wrbuf_len(output_record), wrbuf_buf(output_record));
-                printf("output_expect_record = %s\n",
-                       output_expect_record);
-            }
-            else if (memcmp(output_expect_record, wrbuf_buf(output_record),
-                            strlen(output_expect_record)))
+            else if (strcmp(output_expect_record, wrbuf_cstr(output_record)))
             {
                 ret = 0;
-                printf("got-output_record = %.*s\n",
-                       wrbuf_len(output_record), wrbuf_buf(output_record));
-                printf("output_expect_record = %s\n",
-                       output_expect_record);
+                printf("got-output_record len=%d: %s\n", 
+                       wrbuf_len(output_record),wrbuf_cstr(output_record));
+                printf("output_expect_record len=%d %s\n",
+                       strlen(output_expect_record), output_expect_record);
             }
             else
             {
                 ret = 1;
             }
         }
-        wrbuf_free(output_record, 1);
+        wrbuf_destroy(output_record);
+    }
+    return ret;
+}
+
+static int conv_convert_test_iter(yaz_record_conv_t p,
+                                  const char *input_record,
+                                  const char *output_expect_record,
+                                  int num_iter)
+{
+    int i;
+    int ret;
+    for (i = 0; i < num_iter; i++)
+    {
+        ret = conv_convert_test(p, input_record, output_expect_record);
+        if (!ret)
+            break;
     }
     return ret;
 }
@@ -322,7 +323,7 @@ static void tst_convert2(void)
                                   "/>"
                                   "</backend>",
                                   0, &p));
-    YAZ_CHECK(conv_convert_test(p, marcxml_rec, iso2709_rec));
+    YAZ_CHECK(conv_convert_test_iter(p, marcxml_rec, iso2709_rec, 100));
     yaz_record_conv_destroy(p);
 }