1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
|
#!/usr/local/bin/perl
use lib '..','../blib/lib','../blib/arch';
use Boulder::Store;
BEGIN {
unlink <test.db*>;
$^W = 0;
}
END { unlink <test.db*>; }
sub test ($$;$) {
my($num, $true,$msg) = @_;
print($true ? "ok $num\n" : "not ok $num $msg\n");
}
my($s,@s,$store);
print "1..29\n";
test 1,$store=new Boulder::Store('test.db',1);
test 2,$s = new Stone (name=>'george',
age=>23,
sex=>M,
address=>{
street=>'29 Rockland drive',
town=>'Fort Washington',
ZIP=>'77777'
}
);
test 3,$store->write_record($s) ne '';
test 4,$store->write_record(new Stone(name=>'fred',
age=>30,
sex=>M,
address=>{
street=>'19 Gravel Path',
town=>'Bedrock',
ZIP=>'12345'},
phone=>{
day=>'111-1111',
eve=>'222-2222'
}
));
test 5,$store->write_record(new Stone(name=>'andrew',
age=>18,
sex=>M));
test 6,$store->write_record(new Stone(name=>'gertrude',
age=>46,
sex=>F));
test 7,$store->write_record(new Stone(name=>'abigail',
age=>29,
sex=>F));
test 8,$store->write_record(new Stone(name=>'james',
age=>34,
sex=>M));
test 9,4 == $store->put(new Stone(name=>'angelique',
age=>16,
sex=>F),
4);
test 10,5 == $store->put(new Stone(name=>'mabel',
age=>16,
record_no=>5,
sex=>F)
);
test 11,$store->add_index('age');
undef $store;
test 12,$store=new Boulder::Store('test.db'=>1);
test 13,$s=$store->get(0);
test 14,$s->index('address.ZIP') eq '77777';
test 15,$s=$store->get(2);
test 16,$s->index('age') == 18;
test 17,$s=$store->get(5);
test 18,$s->index('age') == 16;
test 19,$store->query('sex'=>F) and @s = $store->read_record();
test 20,$s[0]->get('sex') eq 'F';
test 21,@s==3;
test 22,$store->query(eval=>'<age> > 25') and @s = $store->read_record();
$ok = 1;
foreach (@s) {
undef $ok unless $_->get('age') > 25;
}
test 23,$ok;
test 24,@s==2;
test 25,$store->add_index('name');
test 26,$store->query('name'=>'mabel') and @s = $store->read_record();;
test 27,@s==1;
test 28,$s[0]->get('age') == 16 and $s[0]->get('name') eq 'mabel';
test 29,!($store->query('name'=>'foobar') and @s = $store->read_record());
|