# -*- Mode: Perl -*- # scan.t -- # ITIID : $ITI$ $Header $__Header$ # Author : Ulrich Pfeifer # Created On : Thu Aug 8 12:14:23 1996 # Last Modified By: Ulrich Pfeifer # Last Modified On: Sun Nov 22 18:44:33 1998 # Language : CPerl # Update Count : 128 # Status : Unknown, Use with caution! # # Copyright (c) 1996-1997, Ulrich Pfeifer # ######################### We start with some black magic to print on failure. BEGIN { $| = 1; print "1..32\n"; } END {print "not ok 1\n" unless $loaded; system 'rm -rf test' if -d 'test'; } #use diagnostics; use WAIT::Database; $loaded = 1; print "ok 1\n"; ######################### End of black magic. $test = 2; $db = create WAIT::Database name => 'test'; print ((defined $db)? "ok $test\n" : "not ok $test\n"); $test++; $tb = create_table $db name => 'sample', attr => ['docid', 'term'], djk => ['docid']; print ((defined $tb)? "ok $test\n" : "not ok $test\n"); $test++; $etid = 1; while () { chomp; my($weight, $did, $term) = split; $tid = $tb->insert($weight, docid => $did, term => $term); push @db, [$did, $term, $weight]; print (($tid == $etid++)? "ok $test\n" : "not ok $test\n"); $test++; } $sc = $tb->open_scan(); print ((defined $sc)? "ok $test\n" : "not ok $test\n"); $test++; $tid = 0; while (%tp = $sc->next()) { printf "%s", (($tp{docid} == $db[$tid]->[0] and $tp{term} eq $db[$tid]->[1])? "ok $test\n" : "not ok $test\n"); $test++; $tid++; } $sc = $tb->open_scan(sub {$_[0]->{term} eq 'IR'}); print ((defined $sc)? "ok $test\n" : "not ok $test\n"); $test++; $tid=0; @ndb = @db[1,4]; while (%tp = $sc->next()) { printf "%s", (($tp{docid} == $ndb[$tid]->[0] and $tp{term} eq $ndb[$tid]->[1])? "ok $test\n" : "not ok $test\n"); $test++; $tid++; } $sc = $tb->open_index_scan(['docid', 'term']); print ((defined $sc)? "ok $test\n" : "not ok $test\n"); $test++; $etid = 1; while (%tp = $sc->next()) { print (($tp{_id} == $etid++)?"ok $test\n" : "not ok $test\n"); $test++; } $sc = $tb->open_index_scan(['docid', 'term'], sub {$_[0]->{term} eq 'IR'}); print ((defined $sc)? "ok $test\n" : "not ok $test\n"); $test++; @ndb = (1,4); while (%tp = $sc->next()) { print (($tp{_id} == shift(@ndb)+1)?"ok $test\n" : "not ok $test\n"); $test++; } $status = $tb->close; print (($status)? "ok $test\n" : "not ok $test\n"); $test++; # must have destroyed all handles here ! # clean up $status = $db->dispose; print (($status)? "ok $test\n" : "not ok $test\n"); $test++; print ((!defined $db)? "ok $test\n" : "not ok $test\n"); $test++; __END__ 0.1 1 DB 0.2 1 IR 0.3 2 DB 0.4 2 KI 0.5 3 IR 0.6 3 KI