📄 db-3.1.t
字号:
#!./perl -wuse strict ;use lib 't';use util (1);use Test::More ; use BerkeleyDB; plan(skip_all => "1..0 # Skip: this needs Berkeley DB 3.1.x or better\n") if $BerkeleyDB::db_version < 3.1 ;plan(tests => 48) ;my $Dfile = "dbhash.tmp";my $Dfile2 = "dbhash2.tmp";my $Dfile3 = "dbhash3.tmp";unlink $Dfile;umask(0) ;{ title "c_count"; my $lex = new LexFile $Dfile ; my %hash ; my $db = tie %hash, 'BerkeleyDB::Hash', -Filename => $Dfile, -Property => DB_DUP, -Flags => DB_CREATE ; ok $db, " open database ok"; $hash{'Wall'} = 'Larry' ; $hash{'Wall'} = 'Stone' ; $hash{'Smith'} = 'John' ; $hash{'Wall'} = 'Brick' ; $hash{'Wall'} = 'Brick' ; $hash{'mouse'} = 'mickey' ; is keys %hash, 6, " keys == 6" ; # create a cursor my $cursor = $db->db_cursor() ; ok $cursor, " created cursor"; my $key = "Wall" ; my $value ; cmp_ok $cursor->c_get($key, $value, DB_SET), '==', 0, " c_get ok" ; is $key, "Wall", " key is 'Wall'"; is $value, "Larry", " value is 'Larry'"; ; my $count ; cmp_ok $cursor->c_count($count), '==', 0, " c_count ok" ; is $count, 4, " count is 4" ; $key = "Smith" ; cmp_ok $cursor->c_get($key, $value, DB_SET), '==', 0, " c_get ok" ; is $key, "Smith", " key is 'Smith'"; is $value, "John", " value is 'John'"; ; cmp_ok $cursor->c_count($count), '==', 0, " c_count ok" ; is $count, 1, " count is 1" ; undef $db ; undef $cursor ; untie %hash ;}{ title "db_key_range"; my $lex = new LexFile $Dfile ; my %hash ; my $db = tie %hash, 'BerkeleyDB::Btree', -Filename => $Dfile, -Property => DB_DUP, -Flags => DB_CREATE ; isa_ok $db, 'BerkeleyDB::Btree', " create database ok"; $hash{'Wall'} = 'Larry' ; $hash{'Wall'} = 'Stone' ; $hash{'Smith'} = 'John' ; $hash{'Wall'} = 'Brick' ; $hash{'Wall'} = 'Brick' ; $hash{'mouse'} = 'mickey' ; is keys %hash, 6, " 6 keys" ; my $key = "Wall" ; my ($less, $equal, $greater) ; cmp_ok $db->db_key_range($key, $less, $equal, $greater), '==', 0, " db_key_range ok" ; cmp_ok $less, '!=', 0 ; cmp_ok $equal, '!=', 0 ; cmp_ok $greater, '!=', 0 ; $key = "Smith" ; cmp_ok $db->db_key_range($key, $less, $equal, $greater), '==', 0, " db_key_range ok" ; cmp_ok $less, '==', 0 ; cmp_ok $equal, '!=', 0 ; cmp_ok $greater, '!=', 0 ; $key = "NotThere" ; cmp_ok $db->db_key_range($key, $less, $equal, $greater), '==', 0, " db_key_range ok" ; cmp_ok $less, '==', 0 ; cmp_ok $equal, '==', 0 ; cmp_ok $greater, '==', 1 ; undef $db ; untie %hash ;}{ title "rename a subdb"; my $lex = new LexFile $Dfile ; my $db1 = new BerkeleyDB::Hash -Filename => $Dfile, -Subname => "fred" , -Flags => DB_CREATE ; isa_ok $db1, 'BerkeleyDB::Hash', " create database ok"; my $db2 = new BerkeleyDB::Btree -Filename => $Dfile, -Subname => "joe" , -Flags => DB_CREATE ; isa_ok $db2, 'BerkeleyDB::Btree', " create database ok"; # Add a k/v pair my %data = qw( red sky blue sea black heart yellow belley green grass ) ; ok addData($db1, %data), " added to db1 ok" ; ok addData($db2, %data), " added to db2 ok" ; undef $db1 ; undef $db2 ; # now rename cmp_ok BerkeleyDB::db_rename(-Filename => $Dfile, -Subname => "fred", -Newname => "harry"), '==', 0, " rename ok"; my $db3 = new BerkeleyDB::Hash -Filename => $Dfile, -Subname => "harry" ; isa_ok $db3, 'BerkeleyDB::Hash', " verify rename";}{ title "rename a file"; my $lex = new LexFile $Dfile, $Dfile2 ; my $db1 = new BerkeleyDB::Hash -Filename => $Dfile, -Subname => "fred" , -Flags => DB_CREATE; isa_ok $db1, 'BerkeleyDB::Hash', " create database ok"; my $db2 = new BerkeleyDB::Hash -Filename => $Dfile, -Subname => "joe" , -Flags => DB_CREATE ; isa_ok $db2, 'BerkeleyDB::Hash', " create database ok"; # Add a k/v pair my %data = qw( red sky blue sea black heart yellow belley green grass ) ; ok addData($db1, %data), " add data to db1" ; ok addData($db2, %data), " add data to db2" ; undef $db1 ; undef $db2 ; # now rename cmp_ok BerkeleyDB::db_rename(-Filename => $Dfile, -Newname => $Dfile2), '==', 0, " rename file to $Dfile2 ok"; my $db3 = new BerkeleyDB::Hash -Filename => $Dfile2, -Subname => "fred" ; isa_ok $db3, 'BerkeleyDB::Hash', " verify rename" or diag "$! $BerkeleyDB::Error";# TODO add rename with no subname & txn}{ title "verify"; my $lex = new LexFile $Dfile, $Dfile2 ; my $db1 = new BerkeleyDB::Hash -Filename => $Dfile, -Subname => "fred" , -Flags => DB_CREATE ; isa_ok $db1, 'BerkeleyDB::Hash', " create database ok"; # Add a k/v pair my %data = qw( red sky blue sea black heart yellow belley green grass ) ; ok addData($db1, %data), " added data ok" ; undef $db1 ; # now verify cmp_ok BerkeleyDB::db_verify(-Filename => $Dfile, -Subname => "fred", ), '==', 0, " verify ok"; # now verify & dump cmp_ok BerkeleyDB::db_verify(-Filename => $Dfile, -Subname => "fred", -Outfile => $Dfile2, ), '==', 0, " verify and dump ok"; }# db_remove with env
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -