13
my $Dfile = "dbhash.tmp";
19
# Check for invalid parameters
21
# Check for invalid parameters
23
eval ' $db = new BerkeleyDB::Unknown -Stupid => 3 ; ' ;
24
ok $@ =~ /unknown key value\(s\) Stupid/ ;
26
eval ' $db = new BerkeleyDB::Unknown -Bad => 2, -Mode => 0345, -Stupid => 3; ' ;
27
ok $@ =~ /unknown key value\(s\) (Bad,? |Stupid,? ){2}/ ;
29
eval ' $db = new BerkeleyDB::Unknown -Env => 2 ' ;
30
ok $@ =~ /^Env not of type BerkeleyDB::Env/ ;
32
eval ' $db = new BerkeleyDB::Unknown -Txn => "fred" ' ;
33
ok $@ =~ /^Txn not of type BerkeleyDB::Txn/ ;
35
my $obj = bless [], "main" ;
36
eval ' $db = new BerkeleyDB::Unknown -Env => $obj ' ;
37
ok $@ =~ /^Env not of type BerkeleyDB::Env/ ;
40
# check the interface to a rubbish database
43
my $lex = new LexFile $Dfile ;
44
ok writeFile($Dfile, "") ;
46
ok ! (new BerkeleyDB::Unknown -Filename => $Dfile);
48
# now a non-database file
49
writeFile($Dfile, "\x2af6") ;
50
ok ! (new BerkeleyDB::Unknown -Filename => $Dfile);
53
# check the interface to a Hash database
56
my $lex = new LexFile $Dfile ;
58
# create a hash database
59
ok my $db = new BerkeleyDB::Hash -Filename => $Dfile,
65
ok $db->db_put("some key", "some value") == 0 ;
66
ok $db->db_put("key", "value") == 0 ;
71
# now open it with Unknown
72
ok $db = new BerkeleyDB::Unknown -Filename => $Dfile;
74
ok $db->type() == DB_HASH ;
75
ok $db->db_get("some key", $value) == 0 ;
76
ok $value eq "some value" ;
77
ok $db->db_get("key", $value) == 0 ;
78
ok $value eq "value" ;
81
eval { $db->Tie(\@array)} ;
82
ok $@ =~ /^Tie needs a reference to a hash/ ;
86
ok $hash{"some key"} eq "some value" ;
90
# check the interface to a Btree database
93
my $lex = new LexFile $Dfile ;
95
# create a hash database
96
ok my $db = new BerkeleyDB::Btree -Filename => $Dfile,
102
ok $db->db_put("some key", "some value") == 0 ;
103
ok $db->db_put("key", "value") == 0 ;
108
# now open it with Unknown
109
# create a hash database
110
ok $db = new BerkeleyDB::Unknown -Filename => $Dfile;
112
ok $db->type() == DB_BTREE ;
113
ok $db->db_get("some key", $value) == 0 ;
114
ok $value eq "some value" ;
115
ok $db->db_get("key", $value) == 0 ;
116
ok $value eq "value" ;
120
eval { $db->Tie(\@array)} ;
121
ok $@ =~ /^Tie needs a reference to a hash/ ;
125
ok $hash{"some key"} eq "some value" ;
130
# check the interface to a Recno database
133
my $lex = new LexFile $Dfile ;
135
# create a recno database
136
ok my $db = new BerkeleyDB::Recno -Filename => $Dfile,
137
-Flags => DB_CREATE ;
139
# Add a few k/v pairs
142
ok $db->db_put(0, "some value") == 0 ;
143
ok $db->db_put(1, "value") == 0 ;
148
# now open it with Unknown
149
# create a hash database
150
ok $db = new BerkeleyDB::Unknown -Filename => $Dfile;
152
ok $db->type() == DB_RECNO ;
153
ok $db->db_get(0, $value) == 0 ;
154
ok $value eq "some value" ;
155
ok $db->db_get(1, $value) == 0 ;
156
ok $value eq "value" ;
160
eval { $db->Tie(\%hash)} ;
161
ok $@ =~ /^Tie needs a reference to an array/ ;
165
ok $array[1] eq "value" ;