Adequate, at last. Tests for sensible sequences of events issued on a
[ZOOM-Perl-moved-to-github.git] / t / 13-resultset.t
index 773a99e..6a5cda7 100644 (file)
@@ -1,11 +1,11 @@
-# $Id: 13-resultset.t,v 1.2 2005-11-02 17:24:27 mike Exp $
+# $Id: 13-resultset.t,v 1.6 2005-11-07 15:48:21 mike Exp $
 
 # Before `make install' is performed this script should be runnable with
 # `make test'. After `make install' it should work as `perl 13-resultset.t'
 
 use strict;
 use warnings;
-use Test::More tests => 14;
+use Test::More tests => 23;
 BEGIN { use_ok('Net::Z3950::ZOOM') };
 
 my($errcode, $errmsg, $addinfo) = (undef, "dummy", "dummy");
@@ -39,6 +39,8 @@ ok(length($data2) < length($data1), "re-fetched record is brief, old was full");
 
 Net::Z3950::ZOOM::resultset_option_set($rs, preferredRecordSyntax => "xml");
 $rec = Net::Z3950::ZOOM::resultset_record($rs, 0);
+my $cloned = Net::Z3950::ZOOM::record_clone($rec);
+ok(defined $cloned, "cloned record");
 $data2 = Net::Z3950::ZOOM::record_get($rec, "render", $len);
 ok($data2 =~ /<title>/i, "option for XML syntax is honoured");
 
@@ -48,18 +50,34 @@ ok($data2 =~ /<title>/i, "option for XML syntax is honoured");
 # ZOOM_resultset_cache_reset(), which presumably empties it.
 #
 $rec = Net::Z3950::ZOOM::resultset_record_immediate($rs, 0);
-ok(defined $rec, "prefetched record obtained with *_immediate()");
+ok(defined $rec, "prefetched record obtained with _immediate()");
 my $data3 = Net::Z3950::ZOOM::record_get($rec, "render", $len);
-ok($data3 eq $data2, "*_immediate record renders as expected");
+ok($data3 eq $data2, "_immediate record renders as expected");
 $rec = Net::Z3950::ZOOM::resultset_record_immediate($rs, 1);
-ok(!defined $rec, "non-prefetched record obtained with *_immediate()");
+ok(!defined $rec, "non-prefetched record obtained with _immediate()");
 Net::Z3950::ZOOM::resultset_cache_reset($rs);
 $rec = Net::Z3950::ZOOM::resultset_record_immediate($rs, 0);
-ok(!defined $rec, "*_immediate(0) fails after cache reset");
+ok(!defined $rec, "_immediate(0) fails after cache reset");
 # Fill both cache slots, but with no record array
-#Net::Z3950::ZOOM::resultset_records($rs, [ $rec ], 0, 1);
+my $tmp = Net::Z3950::ZOOM::resultset_records($rs, 0, 2, 0);
+ok(!defined $tmp, "resultset_records() returns undef as expected");
+$rec = Net::Z3950::ZOOM::resultset_record_immediate($rs, 0);
+ok(defined $rec, "_immediate(0) ok after resultset_records()");
+# Fetch all records at once using records()
+$tmp = Net::Z3950::ZOOM::resultset_records($rs, 0, 2, 1);
+ok(@$tmp == 2, "resultset_records() returned two records");
+$data3 = Net::Z3950::ZOOM::record_get($tmp->[0], "render", $len);
+ok($data3 eq $data2, "record returned from resultset_records() renders as expected");
+$rec = Net::Z3950::ZOOM::resultset_record_immediate($rs, 1);
+ok(defined $rec, "_immediate(1) ok after resultset_records()");
 
 Net::Z3950::ZOOM::resultset_destroy($rs);
 ok(1, "destroyed result-set");
 Net::Z3950::ZOOM::connection_destroy($conn);
 ok(1, "destroyed connection");
+
+$data3 = Net::Z3950::ZOOM::record_get($cloned, "render", $len);
+ok(1, "rendered cloned record after its result-set was destroyed");
+ok($data3 eq $data2, "render of clone as expected");
+Net::Z3950::ZOOM::record_destroy($cloned);
+ok(1, "destroyed cloned record");