Implemented yp2::odr which is a noncopyable wrapper for YAZ' ODR.
[metaproxy-moved-to-github.git] / src / test_filter_virt_db.cpp
index 68056f2..ded4057 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: test_filter_virt_db.cpp,v 1.3 2005-10-25 16:01:36 adam Exp $
+/* $Id: test_filter_virt_db.cpp,v 1.8 2005-10-30 17:13:36 adam Exp $
    Copyright (c) 2005, Index Data.
 
 %LICENSE%
@@ -8,11 +8,12 @@
 #include <iostream>
 #include <stdexcept>
 
+#include "util.hpp"
 #include "filter_virt_db.hpp"
 #include "filter_backend_test.hpp"
 #include "filter_log.hpp"
 
-#include "router.hpp"
+#include "router_chain.hpp"
 #include "session.hpp"
 #include "package.hpp"
 
@@ -44,20 +45,19 @@ BOOST_AUTO_TEST_CASE( test_filter_virt_db_2 )
         
         yp2::filter::Virt_db vdb;
         
-        router.rule(vdb);
+        router.append(vdb);
         
         // Create package with Z39.50 init request in it
         // Since there is not vhost given, the virt will make its
         // own init response (regardless of backend)
         yp2::Package pack;
         
-        ODR odr = odr_createmem(ODR_ENCODE);
+        yp2::odr odr;
         Z_APDU *apdu = zget_APDU(odr, Z_APDU_initRequest);
         
         BOOST_CHECK(apdu);
         
         pack.request() = apdu;
-        odr_destroy(odr);
         
         // Put it in router
         pack.router(router).move(); 
@@ -83,7 +83,7 @@ BOOST_AUTO_TEST_CASE( test_filter_virt_db_2 )
 static void init(yp2::Package &pack, yp2::Router &router)
 {
     // Create package with Z39.50 init request in it
-    ODR odr = odr_createmem(ODR_ENCODE);
+    yp2::odr odr;
     Z_APDU *apdu = zget_APDU(odr, Z_APDU_initRequest);
     
     BOOST_CHECK(apdu);
@@ -91,7 +91,6 @@ static void init(yp2::Package &pack, yp2::Router &router)
         return;
     
     pack.request() = apdu;
-    odr_destroy(odr);
     
     // Put it in router
     pack.router(router).move(); 
@@ -110,27 +109,17 @@ static void init(yp2::Package &pack, yp2::Router &router)
 }
                  
 static void search(yp2::Package &pack, yp2::Router &router,
-                   const char *pqf_query, const char *db,
+                   const std::string &query, const char *db,
                    const char *setname)
 {
     // Create package with Z39.50 search request in it
             
-    ODR odr = odr_createmem(ODR_ENCODE);
+    yp2::odr odr;
     Z_APDU *apdu = zget_APDU(odr, Z_APDU_searchRequest);
-    
-    YAZ_PQF_Parser pqf_parser = yaz_pqf_create();
-    
-    Z_RPNQuery *rpn = yaz_pqf_parse(pqf_parser, odr, pqf_query);
-    BOOST_CHECK(rpn);
-    if (!rpn)
-        return;
-    Z_Query query;
-    query.which = Z_Query_type_1;
-    query.u.type_1 = rpn;
-    
-    apdu->u.searchRequest->resultSetName = odr_strdup(odr, setname);
 
-    apdu->u.searchRequest->query = &query;
+    yp2::util::pqf(odr, apdu, query);
+
+    apdu->u.searchRequest->resultSetName = odr_strdup(odr, setname);
     
     apdu->u.searchRequest->num_databaseNames = 1;
     apdu->u.searchRequest->databaseNames = (char**)
@@ -143,8 +132,6 @@ static void search(yp2::Package &pack, yp2::Router &router,
     
     pack.request() = apdu;
     
-    odr_destroy(odr);
-    
     Z_GDU *gdu_test = pack.request().get();
     BOOST_CHECK(gdu_test);
     
@@ -170,7 +157,7 @@ static void present(yp2::Package &pack, yp2::Router &router,
 {
     // Create package with Z39.50 present request in it
             
-    ODR odr = odr_createmem(ODR_ENCODE);
+    yp2::odr odr;
     Z_APDU *apdu = zget_APDU(odr, Z_APDU_presentRequest);
     
     apdu->u.presentRequest->resultSetId  = odr_strdup(odr, setname);
@@ -183,8 +170,6 @@ static void present(yp2::Package &pack, yp2::Router &router,
     
     pack.request() = apdu;
     
-    odr_destroy(odr);
-    
     Z_GDU *gdu_test = pack.request().get();
     BOOST_CHECK(gdu_test);
     
@@ -212,18 +197,18 @@ BOOST_AUTO_TEST_CASE( test_filter_virt_db_3 )
 
         yp2::filter::Log filter_log1("FRONT");
 #if 0
-        router.rule(filter_log1);
+        router.append(filter_log1);
 #endif
    
         yp2::filter::Virt_db vdb;        
-        router.rule(vdb);
+        router.append(vdb);
         vdb.add_map_db2vhost("Default", "localhost:210");
         yp2::filter::Log filter_log2("BACK");
 #if 0
-        router.rule(filter_log2);
+        router.append(filter_log2);
 #endif
         yp2::filter::Backend_test btest;
-        router.rule(btest);
+        router.append(btest);
 
         yp2::Session session1;
         yp2::Origin origin1;