X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=zlint%2Ftest-init-04.cpp;fp=zlint%2Ftest-init-04.cpp;h=4d436f5d6d36a615eb09f9912756d1b3fb7c00d0;hb=40213edfa0408f88b008c3d1ee4a4f90dcdf2fb9;hp=0000000000000000000000000000000000000000;hpb=b1f8a12e7743258d4f9654157d212ffcd83ae241;p=yazpp-moved-to-github.git diff --git a/zlint/test-init-04.cpp b/zlint/test-init-04.cpp new file mode 100644 index 0000000..4d436f5 --- /dev/null +++ b/zlint/test-init-04.cpp @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2004, Index Data. + * See the file LICENSE for details. + * + * $Id: test-init-04.cpp,v 1.1 2004-03-25 23:14:07 adam Exp $ + */ + +#include + +#include + +#define REFID_BUF1 "zlint\000check1" +#define REFID_LEN1 12 + +Zlint_test_init_04::Zlint_test_init_04() +{ +} + +Zlint_test_init_04::~Zlint_test_init_04() +{ +} + +Zlint_code Zlint_test_init_04::init(Zlint *z) +{ + int len; + Z_APDU *apdu = z->create_Z_PDU(Z_APDU_initRequest); + Z_InitRequest *init = apdu->u.initRequest; + + z->msg_check_for("for referenceID for init"); + + ODR_MASK_SET(init->protocolVersion, Z_ProtocolVersion_3); + init->referenceId = z->mk_refid(REFID_BUF1, REFID_LEN1); + + int r = z->send_Z_PDU(apdu, &len); + if (r < 0) + { + z->msg_check_fail("unable to send init request"); + return TEST_FINISHED; + } + return TEST_CONTINUE; +} + +Zlint_code Zlint_test_init_04::recv_gdu(Zlint *z, Z_GDU *gdu) +{ + if (gdu->which == Z_GDU_Z3950 && + 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 (!init->referenceId) + z->msg_check_fail("missing referenceID from init response"); + else if (init->referenceId->len != REFID_LEN1 + || memcmp(init->referenceId->buf, REFID_BUF1, REFID_LEN1)) + z->msg_check_fail("reference ID does not match"); + z->msg_check_ok(); + } + else + z->msg_check_fail("did not receive init response as expected"); + return TEST_FINISHED; +} +