X-Git-Url: http://git.indexdata.com/?p=yazpp-moved-to-github.git;a=blobdiff_plain;f=zlint%2Ftest-search-01.cpp;h=88467aa464e808f2696cded5eb178d68a067255b;hp=a292f3af5ff9289c85e925acf4cf19a2dac418ea;hb=d5a7c67de0f8caaf7bbd2da51e6c4fd02d2216ca;hpb=40213edfa0408f88b008c3d1ee4a4f90dcdf2fb9 diff --git a/zlint/test-search-01.cpp b/zlint/test-search-01.cpp index a292f3a..88467aa 100644 --- a/zlint/test-search-01.cpp +++ b/zlint/test-search-01.cpp @@ -1,8 +1,6 @@ -/* - * Copyright (c) 2004, Index Data. +/* This file is part of the yazpp toolkit. + * Copyright (C) 1998-2009 Index Data and Mike Taylor * See the file LICENSE for details. - * - * $Id: test-search-01.cpp,v 1.1 2004-03-25 23:14:07 adam Exp $ */ #include @@ -10,6 +8,7 @@ #include #include +#include static const char *try_query[] = { "@attr 1=4 petersson", @@ -78,8 +77,8 @@ Zlint_code Zlint_test_search_01::init(Zlint *z) int r = z->send_Z_PDU(apdu, &len); if (r < 0) { - z->msg_check_fail("unable to send init request"); - return TEST_FINISHED; + z->msg_check_fail("unable to send init request"); + return TEST_FINISHED; } return TEST_CONTINUE; } @@ -88,80 +87,82 @@ Zlint_code Zlint_test_search_01::sendTest(Zlint *z) { if (!m_got_result_set) { - Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_searchRequest); - Z_SearchRequest *sr; - sr = apdu->u.searchRequest; - sr->query = (Z_Query *) odr_malloc(z->odr_encode(), sizeof(*sr->query)); - if (try_query[m_query_no] && sr) - { - sr->query->which = Z_Query_type_1; - Z_RPNQuery *rpn; - YAZ_PQF_Parser pqf_parser = yaz_pqf_create (); - - z->getDatabase(&sr->databaseNames, &sr->num_databaseNames); - - rpn = yaz_pqf_parse(pqf_parser, z->odr_encode(), - try_query[m_query_no]); - - yaz_pqf_destroy (pqf_parser); - - if (!rpn) - { - z->msg_check_fail("Query %s invalid", try_query[m_query_no]); - return TEST_FINISHED; - } - int len; - sr->query->u.type_1 = rpn; - z->send_Z_PDU(apdu, &len); - } - else - { - z->msg_check_notapp(); - z->msg_check_info("unable to get any hit count"); - return TEST_FINISHED; - } + Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_searchRequest); + Z_SearchRequest *sr; + sr = apdu->u.searchRequest; + sr->query = (Z_Query *) odr_malloc(z->odr_encode(), sizeof(*sr->query)); + if (try_query[m_query_no] && sr) + { + sr->query->which = Z_Query_type_1; + Z_RPNQuery *rpn; + YAZ_PQF_Parser pqf_parser = yaz_pqf_create (); + + z->getDatabase(&sr->databaseNames, &sr->num_databaseNames); + + rpn = yaz_pqf_parse(pqf_parser, z->odr_encode(), + try_query[m_query_no]); + + yaz_pqf_destroy (pqf_parser); + + if (!rpn) + { + z->msg_check_fail("Query %s invalid", try_query[m_query_no]); + return TEST_FINISHED; + } + int len; + sr->query->u.type_1 = rpn; + z->send_Z_PDU(apdu, &len); + } + else + { + z->msg_check_notapp(); + z->msg_check_info("unable to get any hit count"); + return TEST_FINISHED; + } } else if (m_got_result_set && try_syntax[m_record_syntax_no]) { - int len; - Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_presentRequest); - Z_PresentRequest *pr = apdu->u.presentRequest; - *pr->numberOfRecordsRequested = 1; - *pr->resultSetStartPoint = 1; + int len; + Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_presentRequest); + Z_PresentRequest *pr = apdu->u.presentRequest; + *pr->numberOfRecordsRequested = 1; + *pr->resultSetStartPoint = 1; - z->msg_check_for("record syntax %s", try_syntax[m_record_syntax_no]); - pr->preferredRecordSyntax = - yaz_str_to_z3950oid(z->odr_encode(), CLASS_RECSYN, - try_syntax[m_record_syntax_no]); - z->send_Z_PDU(apdu, &len); - return TEST_CONTINUE; + z->msg_check_for("record syntax %s", try_syntax[m_record_syntax_no]); + pr->preferredRecordSyntax = + yaz_string_to_oid_odr(yaz_oid_std(), + CLASS_RECSYN, try_syntax[m_record_syntax_no], + z->odr_encode()); + z->send_Z_PDU(apdu, &len); + return TEST_CONTINUE; } else if(m_got_result_set && !try_syntax[m_record_syntax_no]) { - Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_sortRequest); - if (apdu && try_sort[m_sort_no]) - { - z->msg_check_for("sort %s", try_sort[m_sort_no]); + Z_APDU *apdu = zget_APDU(z->odr_encode(), Z_APDU_sortRequest); + if (apdu && try_sort[m_sort_no]) + { + z->msg_check_for("sort %s", try_sort[m_sort_no]); - char *setstring = "default"; - int len; - Z_SortRequest *sr = apdu->u.sortRequest; - - sr->num_inputResultSetNames = 1; - sr->num_inputResultSetNames = 1; - sr->inputResultSetNames = (Z_InternationalString **) - odr_malloc (z->odr_encode(), sizeof(*sr->inputResultSetNames)); - sr->inputResultSetNames[0] = odr_strdup (z->odr_encode(), setstring); - sr->sortedResultSetName = odr_strdup(z->odr_encode(), setstring); - sr->sortSequence = yaz_sort_spec(z->odr_encode(), try_sort[m_sort_no]); - z->send_Z_PDU(apdu, &len); - } - else - return TEST_FINISHED; + const char *setstring = "default"; + int len; + Z_SortRequest *sr = apdu->u.sortRequest; + + sr->num_inputResultSetNames = 1; + sr->num_inputResultSetNames = 1; + sr->inputResultSetNames = (Z_InternationalString **) + odr_malloc (z->odr_encode(), sizeof(*sr->inputResultSetNames)); + sr->inputResultSetNames[0] = odr_strdup (z->odr_encode(), setstring); + sr->sortedResultSetName = odr_strdup(z->odr_encode(), setstring); + sr->sortSequence = yaz_sort_spec(z->odr_encode(), try_sort[m_sort_no]); + z->send_Z_PDU(apdu, &len); + } + else + return TEST_FINISHED; } else { - return TEST_FINISHED; + printf ("finished...\n"); + return TEST_FINISHED; } return TEST_CONTINUE; } @@ -169,103 +170,103 @@ Zlint_code Zlint_test_search_01::sendTest(Zlint *z) Zlint_code Zlint_test_search_01::recv_gdu(Zlint *z, Z_GDU *gdu) { if (gdu->which == Z_GDU_Z3950 && - gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse) + gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_initResponse) { - Z_InitResponse *init = gdu->u.z3950->u.initResponse; - int ver = z->initResponseGetVersion(init); - int result = init->result ? *init->result : 0; - if (!result) - { - z->msg_check_notapp(); - z->msg_check_info ("init rejected (result false)"); - return TEST_FINISHED; - } - return sendTest(z); + Z_InitResponse *init = gdu->u.z3950->u.initResponse; + int result = init->result ? *init->result : 0; + if (!result) + { + z->msg_check_notapp(); + z->msg_check_info ("init rejected (result false)"); + return TEST_FINISHED; + } + return sendTest(z); } else if (gdu->which == Z_GDU_Z3950 && - gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_searchResponse) + gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_searchResponse) { - Z_SearchResponse *sr = gdu->u.z3950->u.searchResponse; - if (sr->records && (sr->records->which == Z_Records_NSD - || - sr->records->which == Z_Records_multipleNSD)) - m_query_no++; - else if (!sr->resultCount || *sr->resultCount == 0) - m_query_no++; - else - { - z->msg_check_ok(); - z->msg_check_info("got %d result count with %s", *sr->resultCount, - try_query[m_query_no]); - m_got_result_set = 1; - } - return sendTest(z); + Z_SearchResponse *sr = gdu->u.z3950->u.searchResponse; + if (sr->records && (sr->records->which == Z_Records_NSD + || + sr->records->which == Z_Records_multipleNSD)) + m_query_no++; + else if (!sr->resultCount || *sr->resultCount == 0) + m_query_no++; + else + { + z->msg_check_ok(); + z->msg_check_info("got %d result count with %s", *sr->resultCount, + try_query[m_query_no]); + m_got_result_set = 1; + } + return sendTest(z); } else if (gdu->which == Z_GDU_Z3950 && - gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_presentResponse) + gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_presentResponse) { - Z_PresentResponse *sr = gdu->u.z3950->u.presentResponse; - if (sr->records && (sr->records->which == Z_Records_NSD - || - sr->records->which == Z_Records_multipleNSD)) - { - z->msg_check_ok(); - z->msg_check_info("present returned NSD for %s", - try_syntax[m_record_syntax_no]); - } - else if (sr->records && sr->records->which == Z_Records_DBOSD - && sr->records->u.databaseOrSurDiagnostics->num_records>0 - && sr->records->u.databaseOrSurDiagnostics->records[0]) - { - if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_databaseRecord) - { - Z_External *ext = sr->records->u.databaseOrSurDiagnostics->records[0]->u.databaseRecord; - Odr_oid *expectRecordSyntax = - yaz_str_to_z3950oid(z->odr_decode(), CLASS_RECSYN, - try_syntax[m_record_syntax_no]); - if (oid_oidcmp(expectRecordSyntax, - ext->direct_reference)) - { - z->msg_check_fail("Got Record in different syntax " - "from that requested %s", - try_syntax[m_record_syntax_no]); - } - else - z->msg_check_ok(); - } - else if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_surrogateDiagnostic) - { - z->msg_check_ok(); - z->msg_check_info("present returned SD %s", - try_syntax[m_record_syntax_no]); - } - else - { - z->msg_check_ok(); - z->msg_check_info("present returned fragment %s", - try_syntax[m_record_syntax_no]); - } - } - else - { - z->msg_check_fail("present returned no records or diagnostics"); - } - m_record_syntax_no++; - return sendTest(z); + Z_PresentResponse *sr = gdu->u.z3950->u.presentResponse; + if (sr->records && (sr->records->which == Z_Records_NSD + || + sr->records->which == Z_Records_multipleNSD)) + { + z->msg_check_ok(); + z->msg_check_info("present returned NSD for %s", + try_syntax[m_record_syntax_no]); + } + else if (sr->records && sr->records->which == Z_Records_DBOSD + && sr->records->u.databaseOrSurDiagnostics->num_records>0 + && sr->records->u.databaseOrSurDiagnostics->records[0]) + { + if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_databaseRecord) + { + Z_External *ext = sr->records->u.databaseOrSurDiagnostics->records[0]->u.databaseRecord; + Odr_oid *expectRecordSyntax = + yaz_string_to_oid_odr( + yaz_oid_std(), CLASS_RECSYN, + try_syntax[m_record_syntax_no], z->odr_decode()); + if (oid_oidcmp(expectRecordSyntax, + ext->direct_reference)) + { + z->msg_check_fail("Got Record in different syntax " + "from that requested %s", + try_syntax[m_record_syntax_no]); + } + else + z->msg_check_ok(); + } + else if (sr->records->u.databaseOrSurDiagnostics->records[0]->which == Z_NamePlusRecord_surrogateDiagnostic) + { + z->msg_check_ok(); + z->msg_check_info("present returned SD %s", + try_syntax[m_record_syntax_no]); + } + else + { + z->msg_check_ok(); + z->msg_check_info("present returned fragment %s", + try_syntax[m_record_syntax_no]); + } + } + else + { + z->msg_check_fail("present returned no records or diagnostics"); + } + m_record_syntax_no++; + return sendTest(z); } else if (gdu->which == Z_GDU_Z3950 && - gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_sortResponse) + gdu->u.z3950 && gdu->u.z3950->which == Z_APDU_sortResponse) { - Z_SortResponse *sr = gdu->u.z3950->u.sortResponse; - z->msg_check_ok(); - if (sr->diagnostics) - z->msg_check_info( "sort NSD for %s", try_sort[m_sort_no]); - m_sort_no++; - return sendTest(z); + Z_SortResponse *sr = gdu->u.z3950->u.sortResponse; + z->msg_check_ok(); + if (sr->diagnostics) + z->msg_check_info( "sort NSD for %s", try_sort[m_sort_no]); + m_sort_no++; + return sendTest(z); } else - z->msg_check_fail("did not receive init/search/present response " - "as expected"); + z->msg_check_fail("did not receive init/search/present response " + "as expected"); return TEST_FINISHED; } @@ -274,3 +275,12 @@ Zlint_code Zlint_test_search_01::recv_fail(Zlint *z, int reason) z->msg_check_fail("target closed connection"); return TEST_FINISHED; } +/* + * Local variables: + * c-basic-offset: 4 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +