1 # $Id: 29-events.t,v 1.4 2006-11-02 17:48:26 mike Exp $
3 # Before `make install' is performed this script should be runnable with
4 # `make test'. After `make install' it should work as `perl 19-events.t'
8 use Test::More tests => 23;
10 BEGIN { use_ok('ZOOM') };
12 ok(ZOOM::event_str(ZOOM::Event::CONNECT) eq "connect",
13 "connect event properly translated");
15 my($errcode, $errmsg, $addinfo) = (undef, "dummy", "dummy");
17 my $host = "z3950.indexdata.com/gils";
18 my $conn = create ZOOM::Connection(async => 1);
19 eval { $conn->connect($host) };
20 ok(!$@, "connection to '$host'");
22 ok(1, "non-reference argument rejected");
23 ok(1, "non-array reference argument rejected");
25 my $val = ZOOM::event([]);
26 ok($val == -3, "empty array reference argument rejected");
28 ok(1, "huge array reference argument rejected");
30 # See comments in 19-event.t
31 assert_event_stream($conn,
33 ZOOM::Event::SEND_APDU,
34 ZOOM::Event::SEND_DATA,
35 ZOOM::Event::RECV_DATA,
36 ZOOM::Event::RECV_APDU,
40 $conn->option(count => 1);
42 eval { $rs = $conn->search_pqf("mineral") };
43 ok(!$@, "search for 'mineral'");
45 assert_event_stream($conn,
46 ZOOM::Event::SEND_APDU,
47 ZOOM::Event::SEND_DATA,
48 -(ZOOM::Event::RECV_DATA),
49 ZOOM::Event::RECV_APDU,
50 ZOOM::Event::RECV_SEARCH,
51 ZOOM::Event::RECV_RECORD,
55 # See comments in 19-event.t
56 sub assert_event_stream {
57 my($conn, @expected) = @_;
59 my $previousExpected = -1;
60 my $expected = shift @expected;
61 while (defined $expected) {
62 my $val = ZOOM::event([$conn]);
64 ok($val == 0, "no events left");
65 $expected = shift @expected;
69 die "impossible" if $val != 1;
70 my $ev = $conn->last_event();
71 next if $previousExpected > 0 && $ev == $previousExpected;
74 $expected = -$expected;
75 $previousExpected = $expected;
77 ok($ev == $expected, ("event is $ev (" .
78 ZOOM::event_str($ev) .
79 "), expected $expected (" .
80 ZOOM::event_str($expected) . ")"));
81 $expected = shift @expected;