Comment on using explain to discover not-cleared-up databases.
[ZOOM-Perl-moved-to-github.git] / t / 29-events.t
1 # $Id: 29-events.t,v 1.1 2006-04-12 12:16:45 mike Exp $
2
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'
5
6 use strict;
7 use warnings;
8 use Test::More tests => 23;
9
10 BEGIN { use_ok('ZOOM') };
11
12 ok(ZOOM::event_str(ZOOM::Event::CONNECT) eq "connect",
13    "connect event properly translated");
14
15 my($errcode, $errmsg, $addinfo) = (undef, "dummy", "dummy");
16
17 my $options = new ZOOM::Options();
18 $options->option(async => 1);
19
20 my $host = "indexdata.com/gils";
21 my $conn = create ZOOM::Connection($options);
22 eval { $conn->connect($host) };
23 ok(!$@, "connection to '$host'");
24
25 ok(1, "non-reference argument rejected");
26 ok(1, "non-array reference argument rejected");
27
28 my $val = ZOOM::event([]);
29 ok($val == -3, "empty array reference argument rejected");
30
31 ok(1, "huge array reference argument rejected");
32
33 # See comments in 19-event.t
34 assert_event_stream($conn, 
35                     ZOOM::Event::CONNECT,
36                     ZOOM::Event::SEND_APDU,
37                     ZOOM::Event::SEND_DATA,
38                     ZOOM::Event::RECV_DATA,
39                     ZOOM::Event::RECV_APDU,
40                     ZOOM::Event::ZEND,
41                     0);
42
43 $conn->option(count => 1);
44 my $rs;
45 eval { $rs = $conn->search_pqf("mineral") };
46 ok(!$@, "search for 'mineral'");
47
48 assert_event_stream($conn,
49                     ZOOM::Event::SEND_APDU,
50                     ZOOM::Event::SEND_DATA,
51                     -(ZOOM::Event::RECV_DATA),
52                     ZOOM::Event::RECV_APDU,
53                     ZOOM::Event::RECV_SEARCH,
54                     ZOOM::Event::RECV_RECORD,
55                     ZOOM::Event::ZEND,
56                     0);
57
58 # See comments in 19-event.t
59 sub assert_event_stream {
60     my($conn, @expected) = @_;
61
62     my $previousExpected = -1;
63     my $expected = shift @expected;
64     while (defined $expected) {
65         my $val = ZOOM::event([$conn]);
66         if ($expected == 0) {
67             ok($val == 0, "no events left");
68             $expected = shift @expected;
69             next;
70         }
71
72         die "impossible" if $val != 1;
73         my $ev = $conn->last_event();
74         next if $previousExpected > 0 && $ev == $previousExpected;
75
76         if ($expected < 0) {
77             $expected = -$expected;
78             $previousExpected = $expected;
79         }
80         ok($ev == $expected, ("event is $ev (" .
81                               ZOOM::event_str($ev) .
82                               "), expected $expected (" .
83                               ZOOM::event_str($expected) . ")"));
84         $expected = shift @expected;
85     }
86 }