Use Odr_oid for OIDs. Require YAZ 3.0.2 or later.
[idzebra-moved-to-github.git] / test / api / t16.c
index cf8dd17..608d510 100644 (file)
@@ -1,5 +1,5 @@
-/* $Id: t16.c,v 1.1 2006-11-16 12:48:28 adam Exp $
-   Copyright (C) 1995-2006
+/* $Id: t16.c,v 1.12 2007-05-08 12:50:05 adam Exp $
+   Copyright (C) 1995-2007
    Index Data ApS
 
 This file is part of the Zebra server.
@@ -33,7 +33,7 @@ const char *myrec[] = {
 #define NUMBER_TO_FETCH_MAX 1000
 
 static ZEBRA_RES fetch_first(ZebraHandle zh, const char *element_set,
-                             oid_value format, ODR odr,
+                             const Odr_oid * format, ODR odr,
                              const char **rec_buf, size_t *rec_len)
 {
     ZebraRetrievalRecord retrievalRecord[1];
@@ -61,10 +61,10 @@ static ZEBRA_RES fetch_first(ZebraHandle zh, const char *element_set,
 }
 
 static ZEBRA_RES fetch_first_compare(ZebraHandle zh, const char *element_set,
-                                     oid_value format, const char *cmp_rec)
+                                     const Odr_oid *format, const char *cmp_rec)
 {
-    const char *rec_buf;
-    size_t rec_len;
+    const char *rec_buf = 0;
+    size_t rec_len = 0;
     ODR odr = odr_createmem(ODR_ENCODE);
     ZEBRA_RES res = fetch_first(zh, element_set, format, odr,
                                 &rec_buf, &rec_len);
@@ -85,6 +85,16 @@ static void tst(int argc, char **argv)
 {
     zint hits;
     ZEBRA_RES res;
+    const char * zebra_xml_sysno 
+        = "<record xmlns=\"http://www.indexdata.com/zebra/\" sysno=\"2\"/>\n";
+
+    const char * zebra_xml_meta 
+        = "<record xmlns=\"http://www.indexdata.com/zebra/\" sysno=\"2\" base=\"Default\" type=\"grs.sgml\" rank=\"0\" size=\"41\" set=\"zebra::meta\"/>\n";
+
+    const char * zebra_xml_index_title_p
+        = "<record xmlns=\"http://www.indexdata.com/zebra/\" sysno=\"2\" set=\"zebra::index::title:p/\">\n"
+"  <index name=\"title\" type=\"p\" seq=\"4\">my title</index>\n"
+"</record>\n";
 
     ZebraService zs = tl_start_up(0, argc, argv);
     ZebraHandle zh = zebra_open(zs, 0);
@@ -95,12 +105,36 @@ static void tst(int argc, char **argv)
     YAZ_CHECK_EQ(res, ZEBRA_OK);
     YAZ_CHECK_EQ(hits, 1);
     
-    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML,
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", yaz_oid_recsyn_xml,
+                                     "mismatch"), ZEBRA_FAIL);
+
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", yaz_oid_recsyn_sutrs,
                                      myrec[0]), ZEBRA_OK);
 
-    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", VAL_TEXT_XML,
-                                     "mismatch"), ZEBRA_FAIL);
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::data", yaz_oid_recsyn_xml,
+                                     myrec[0]), ZEBRA_OK);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::meta::sysno", 
+                                     yaz_oid_recsyn_sutrs,
+                                     "2"), ZEBRA_OK);
 
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::meta::sysno", 
+                                     yaz_oid_recsyn_xml,
+                                     zebra_xml_sysno), ZEBRA_OK);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::meta", yaz_oid_recsyn_xml,
+                                     zebra_xml_meta), ZEBRA_OK);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::index::title:p", 
+                                     yaz_oid_recsyn_xml,
+                                     zebra_xml_index_title_p), ZEBRA_OK);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::nonexistent", 
+                                     yaz_oid_recsyn_xml, ""), ZEBRA_OK);
+    
+    YAZ_CHECK_EQ(fetch_first_compare(zh, "zebra::index::nonexistent", 
+                                     yaz_oid_recsyn_xml, ""), ZEBRA_OK);
+    
     YAZ_CHECK(tl_close_down(zh, zs));
 }