The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl -w
=head1 Basic Checks

These just test that the BiIndex does in fact store two way relations.

=cut


$loaded = 0;
$loaded_gen = 0;

BEGIN { print "1..6\n"} ;
END { print "not ok 1\n" unless $loaded;  
      print "not ok 2\n" unless $loaded_gen; } ;


sub ok { print "ok ", shift, "\n" }
sub nok { print "not ok ", shift, "\n" }

use CDB_File::BiIndex::Generator;
$loaded = 1;
ok(1);
use CDB_File::BiIndex 0.026;
$loaded_gen = 1;
ok(2);

$gindex = new CDB_File::BiIndex::Generator "test";

#check that if we add a relation then it exists.

$gindex->add_relation("James", "Jean");
$gindex->add_relation("James", "Joan");
$gindex->add_relation("Roger", "Kenny");
$gindex->add_relation("Kenny", "Jean");

$gindex->finish(); 

#should actually probably do a DESTROY for proper testing, but
#sometimes this might fail :-)

$index = new CDB_File::BiIndex "test";

$::jamesrel=$index->lookup_first("James");

if ($::jamesrel->[0] eq "Jean" &&
	$::jamesrel->[1] eq "Joan") { ok(3) } else { nok(3) }

#check that the reverse relation exists

$::jeanrel=$index->lookup_second("Jean");

if ($::jeanrel->[0] eq "James" &&
	$::jeanrel->[1] eq "Kenny") { ok(4) } else { nok(4) }

#check no wrong way round relations

#  unless( defined $index->lookup_first("Jean") )
#  	 { ok(5) } else { nok(5) }

#  unless( defined $index->lookup_second("James") )
#  	 { ok(6) } else { nok(6) }

$::badjean=$index->lookup_first("Jean");
unless( $::badjean ) { ok(5) } else { nok(5) }

$::badjames= $index->lookup_second("James");
unless( $::badjames ) { ok(6) } else { nok(6) }

#FIXME - test iteration