Cleaned test scripts to be (nearly?) atomic
[idzebra-moved-to-github.git] / perl / t / 06_retrieval.t
1 #!perl
2 # =============================================================================
3 # $Id: 06_retrieval.t,v 1.6 2004-09-15 14:11:06 heikki Exp $
4 #
5 # Perl API header
6 # =============================================================================
7 BEGIN {
8     if ($ENV{PERL_CORE}) {
9         chdir 't' if -d 't';
10     }
11     push (@INC,'demo','blib/lib','blib/arch');
12 }
13
14 use strict;
15 use warnings;
16
17 use Test::More tests => 30;
18
19 # ----------------------------------------------------------------------------
20 # Session opening and closing
21 BEGIN {
22     use IDZebra;
23     unlink("test06.log");
24     IDZebra::logFile("test06.log");
25     use_ok('IDZebra::Session'); 
26     use_ok('pod');
27 }
28
29
30 # ----------------------------------------------------------------------------
31 # Session opening and closing
32 my $sess = IDZebra::Session->open(configFile => 'demo/zebra.cfg',
33                                   groupName => 'demo2');
34 ok($sess,"session");
35
36 # ----------------------------------------------------------------------------
37 # Insert some test data
38 my $ret;
39 my $sysno;
40 my $F;
41 my $filecount=0;
42 $sess->init;
43 $sess->begin_trans;
44 $sess->databases('demo1', 'demo2');
45 $ret=$sess->end_trans;
46
47 $sess->begin_trans;
48 for $F (<lib/IDZebra/*.pm>)
49 {
50     ($ret,$sysno)=$sess->insert_record (file=>$F, recordType => 'grs.perl.pod');
51     ok( $ret==0, "inserted $F");
52     #print STDERR "Inserted $F ok. ret=$ret sys=$sysno\n";
53     $filecount++;
54 }
55 $ret=$sess->end_trans;
56 ok($filecount>0,"Inserted files");
57 is($ret->{inserted},$filecount, "Inserted all");
58
59 # search
60
61 my ($hits, $expected);
62
63 # Search 1 database
64 my $rs1 = $sess->search(cqlmap    => 'demo/cql.map',
65                         cql       => 'IDZebra',
66                         databases => [qw(demo1)]);
67
68 $expected = $filecount;
69 $hits = $rs1->count;
70 is($hits, $expected, "CQL search ");
71
72 foreach my $rec ($rs1->records(from =>1,
73                               to   =>5)) {
74     isa_ok($rec,'IDZebra::RetrievalRecord');
75 }
76
77 my (@recs) = $rs1->records(from=>1,to=>1);
78
79 ok ($#recs == 0, "Fetched 1 record");
80
81 my $rec1 = shift(@recs);
82
83 isa_ok($rec1,'IDZebra::RetrievalRecord');
84 ok (($rec1->{errCode} == 0), "err: $rec1->{errCode}");
85 ok (($rec1->{errString} eq ""), "errString: $rec1->{errString}");
86 ok (($rec1->{position} == 1), "position: $rec1->{position}");
87 ok (($rec1->{base} eq 'demo1'), "base: $rec1->{base}");
88 ok (($rec1->{sysno}), "sysno: $rec1->{sysno}");
89 ok (($rec1->{score}), "score: $rec1->{score}");
90 ok (($rec1->{format} eq 'SUTRS'), "format: $rec1->{format}");
91 ok ((length($rec1->{buf}) > 0), "buf: ". length($rec1->{buf})." bytes");
92
93 # ----------------------------------------------------------------------------
94 # Close session, check for rs availability
95
96 $sess=undef;
97
98 eval { my ($rec2) = $rs1->records(from=>1,to=>1); };
99
100 ok (($@ ne ""), "Resultset is invalidated with session");
101 # ----------------------------------------------------------------------------
102 # Code from doc...
103 #  foreach my $rec ($rs1->records()) {
104 #      print STDERR "REC:$rec\n";
105 #      unless ($rec->errCode) {
106 #         printf  ("Pos:%d, Base: %s, sysno: %d, score %d format: %s\n%s\n\n",
107 #             $rec->position,
108 #             $rec->base,
109 #             $rec->sysno,
110 #             $rec->score,
111 #             $rec->format,
112 #             $rec->buf
113 #         );
114 #      }
115 #  }
116
117