Added new test for check for zebra:: element set names.
authorAdam Dickmeiss <adam@indexdata.dk>
Thu, 16 Nov 2006 12:48:28 +0000 (12:48 +0000)
committerAdam Dickmeiss <adam@indexdata.dk>
Thu, 16 Nov 2006 12:48:28 +0000 (12:48 +0000)
test/api/Makefile.am
test/api/t16.c [new file with mode: 0644]

index c641b5f..3c5f376 100644 (file)
@@ -1,9 +1,9 @@
-# $Id: Makefile.am,v 1.39 2006-10-23 09:31:48 adam Exp $
+# $Id: Makefile.am,v 1.40 2006-11-16 12:48:28 adam Exp $
 
 noinst_PROGRAMS = testclient
 testclient_SOURCES = testclient.c 
 
-simpletests = t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 
+simpletests = t0 t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14 t15 t16
 safaritests = safari1
 check_PROGRAMS = $(simpletests) $(safaritests)
 TESTS = $(check_PROGRAMS)
@@ -31,6 +31,7 @@ t12_SOURCES = t12.c
 t13_SOURCES = t13.c
 t14_SOURCES = t14.c
 t15_SOURCES = t15.c
+t16_SOURCES = t16.c
 
 safari1_SOURCES = safari1.c testlib.c
 
diff --git a/test/api/t16.c b/test/api/t16.c
new file mode 100644 (file)
index 0000000..cf8dd17
--- /dev/null
@@ -0,0 +1,116 @@
+/* $Id: t16.c,v 1.1 2006-11-16 12:48:28 adam Exp $
+   Copyright (C) 1995-2006
+   Index Data ApS
+
+This file is part of the Zebra server.
+
+Zebra is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free
+Software Foundation; either version 2, or (at your option) any later
+version.
+
+Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or
+FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+
+*/
+
+/** \brief test special element set names zebra:: and friends */
+
+#include "testlib.h"
+
+const char *myrec[] = {
+        "<gils>\n"
+        "  <title>My title</title>\n"
+        "</gils>\n",
+        0};
+       
+#define NUMBER_TO_FETCH_MAX 1000
+
+static ZEBRA_RES fetch_first(ZebraHandle zh, const char *element_set,
+                             oid_value format, ODR odr,
+                             const char **rec_buf, size_t *rec_len)
+{
+    ZebraRetrievalRecord retrievalRecord[1];
+    Z_RecordComposition *comp;
+    ZEBRA_RES res;
+
+    retrievalRecord[0].position = 1; /* get from this position */
+    
+    yaz_set_esn(&comp, element_set, odr->mem);
+
+    res = zebra_records_retrieve(zh, odr, "default", comp, format, 1, 
+                                 retrievalRecord);
+    if (res != ZEBRA_OK)
+    {
+        int code = zebra_errCode(zh);
+        yaz_log(YLOG_FATAL, "zebra_records_retrieve returned error %d",
+                code);
+    }
+    else
+    {
+        *rec_buf = retrievalRecord[0].buf;
+        *rec_len = retrievalRecord[0].len;
+    }
+    return res;
+}
+
+static ZEBRA_RES fetch_first_compare(ZebraHandle zh, const char *element_set,
+                                     oid_value format, const char *cmp_rec)
+{
+    const char *rec_buf;
+    size_t rec_len;
+    ODR odr = odr_createmem(ODR_ENCODE);
+    ZEBRA_RES res = fetch_first(zh, element_set, format, odr,
+                                &rec_buf, &rec_len);
+    if (res == ZEBRA_OK)
+    {
+        if (strlen(cmp_rec) != rec_len)
+            res = ZEBRA_FAIL;
+        else if (memcmp(cmp_rec, rec_buf, rec_len))
+            res = ZEBRA_FAIL;
+    }
+    odr_destroy(odr);
+    return res;
+}
+
+
+
+static void tst(int argc, char **argv)
+{
+    zint hits;
+    ZEBRA_RES res;
+
+    ZebraService zs = tl_start_up(0, argc, argv);
+    ZebraHandle zh = zebra_open(zs, 0);
+
+    YAZ_CHECK(tl_init_data(zh, myrec));
+
+    res = zebra_search_PQF(zh, "@attr 1=4 my", "default", &hits);
+    YAZ_CHECK_EQ(res, ZEBRA_OK);
+    YAZ_CHECK_EQ(hits, 1);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML,
+                                     myrec[0]), ZEBRA_OK);
+
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML,
+                                     "mismatch"), ZEBRA_FAIL);
+
+    YAZ_CHECK(tl_close_down(zh, zs));
+}
+
+TL_MAIN
+
+/*
+ * Local variables:
+ * c-basic-offset: 4
+ * indent-tabs-mode: nil
+ * End:
+ * vim: shiftwidth=4 tabstop=8 expandtab
+ */
+