X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;ds=sidebyside;f=zlint%2Ftest-init-08.cpp;fp=zlint%2Ftest-init-08.cpp;h=526990039d620fcef93ee9a9847749344319742c;hb=40213edfa0408f88b008c3d1ee4a4f90dcdf2fb9;hp=0000000000000000000000000000000000000000;hpb=b1f8a12e7743258d4f9654157d212ffcd83ae241;p=yazpp-moved-to-github.git diff --git a/zlint/test-init-08.cpp b/zlint/test-init-08.cpp new file mode 100644 index 0000000..5269900 --- /dev/null +++ b/zlint/test-init-08.cpp @@ -0,0 +1,81 @@ +/* + * Copyright (c) 2004, Index Data. + * See the file LICENSE for details. + * + * $Id: test-init-08.cpp,v 1.1 2004-03-25 23:14:07 adam Exp $ + */ + +#include +#include +#include + +#include + +Zlint_test_init_08::Zlint_test_init_08() +{ + m_no = 0; +} + +Zlint_test_init_08::~Zlint_test_init_08() +{ +} + +Zlint_code Zlint_test_init_08::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 init message sizes %d", m_no); + + /* set all options.. see what target really supports .. */ + ODR_MASK_SET(init->protocolVersion, Z_ProtocolVersion_3); + + *init->maximumRecordSize = m_no * m_no * 100000 + 2000; + *init->preferredMessageSize = m_no * m_no *100000 + 2000; + + 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_08::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 (m_no * m_no * 100000 + 2000 < *init->maximumRecordSize) + z->msg_check_fail("maximumRecordSize bigger than proposed size"); + if (m_no * m_no * 100000 + 2000 < *init->preferredMessageSize) + z->msg_check_fail("preferredMessage bigger than proposed size"); + z->msg_check_ok(); + if (m_no < 2) + { + m_no++; + return TEST_REOPEN; + } + } + else + z->msg_check_fail("did not receive init response as expected"); + return TEST_FINISHED; +} + +Zlint_code Zlint_test_init_08::recv_fail(Zlint *z, int reason) +{ + z->msg_check_fail("target closed connection"); + if (m_no < 2) + { + m_no++; + return TEST_REOPEN; + } + return TEST_FINISHED; +} +