1#!./perl -w 2 3use strict ; 4 5BEGIN { 6 unless(grep /blib/, @INC) { 7 chdir 't' if -d 't'; 8 @INC = '../lib' if -d '../lib'; 9 } 10} 11 12use lib 't'; 13use BerkeleyDB; 14use Test::More; 15use util (1); 16 17#BEGIN 18#{ 19# if ($BerkeleyDB::db_version < 3) { 20# print "1..0 # Skipping test, this needs Berkeley DB 3.x or better\n" ; 21# exit 0 ; 22# } 23#} 24 25plan(skip_all => "this needs Berkeley DB 3.x or better\n" ) 26 if $BerkeleyDB::db_version < 3; 27 28 29 30plan tests => 2; 31 32 33my $Dfile = "dbhash.tmp"; 34my $Dfile2 = "dbhash2.tmp"; 35my $Dfile3 = "dbhash3.tmp"; 36unlink $Dfile; 37 38umask(0) ; 39 40my $redirect = "xyzt" ; 41 42 43{ 44my $redirect = "xyzt" ; 45 { 46 47 my $redirectObj = new Redirect $redirect ; 48 49## BEGIN dupHash 50 use strict ; 51 use BerkeleyDB ; 52 53 my $filename = "fruit" ; 54 unlink $filename ; 55 my $db = new BerkeleyDB::Hash 56 -Filename => $filename, 57 -Flags => DB_CREATE, 58 -Property => DB_DUP 59 or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ; 60 61 # Add a few key/value pairs to the file 62 $db->db_put("red", "apple") ; 63 $db->db_put("orange", "orange") ; 64 $db->db_put("green", "banana") ; 65 $db->db_put("yellow", "banana") ; 66 $db->db_put("red", "tomato") ; 67 $db->db_put("green", "apple") ; 68 69 # print the contents of the file 70 my ($k, $v) = ("", "") ; 71 my $cursor = $db->db_cursor() ; 72 while ($cursor->c_get($k, $v, DB_NEXT) == 0) 73 { print "$k -> $v\n" } 74 75 undef $cursor ; 76 undef $db ; 77## END dupHash 78 unlink $filename ; 79 } 80 81 #print "[" . docat($redirect) . "]" ; 82 is(docat_del_sort($redirect), <<'EOM') ; 83green -> apple 84green -> banana 85orange -> orange 86red -> apple 87red -> tomato 88yellow -> banana 89EOM 90 91} 92 93{ 94my $redirect = "xyzt" ; 95 { 96 97 my $redirectObj = new Redirect $redirect ; 98 99## BEGIN dupSortHash 100 use strict ; 101 use BerkeleyDB ; 102 103 my $filename = "fruit" ; 104 unlink $filename ; 105 my $db = new BerkeleyDB::Hash 106 -Filename => $filename, 107 -Flags => DB_CREATE, 108 -Property => DB_DUP | DB_DUPSORT 109 or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ; 110 111 # Add a few key/value pairs to the file 112 $db->db_put("red", "apple") ; 113 $db->db_put("orange", "orange") ; 114 $db->db_put("green", "banana") ; 115 $db->db_put("yellow", "banana") ; 116 $db->db_put("red", "tomato") ; 117 $db->db_put("green", "apple") ; 118 119 # print the contents of the file 120 my ($k, $v) = ("", "") ; 121 my $cursor = $db->db_cursor() ; 122 while ($cursor->c_get($k, $v, DB_NEXT) == 0) 123 { print "$k -> $v\n" } 124 125 undef $cursor ; 126 undef $db ; 127## END dupSortHash 128 unlink $filename ; 129 } 130 131 #print "[" . docat($redirect) . "]" ; 132 is(docat_del_sort($redirect), <<'EOM') ; 133green -> apple 134green -> banana 135orange -> orange 136red -> apple 137red -> tomato 138yellow -> banana 139EOM 140 141} 142 143 144