examples3.t.T
上传用户:tsgydb
上传日期:2007-04-14
资源大小:10674k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. #!./perl -w
  2. use strict ; 
  3. BEGIN {
  4.     unless(grep /blib/, @INC) {
  5.         chdir 't' if -d 't';
  6.         @INC = '../lib' if -d '../lib';
  7.     }
  8. }
  9. use BerkeleyDB; 
  10. use File::Path qw(rmtree);
  11. BEGIN 
  12. {
  13.     if ($BerkeleyDB::db_version < 3) {
  14.         print "1..0 # Skipping test, this needs Berkeley DB 3.x or bettern" ;
  15.         exit 0 ;
  16.     }
  17. }
  18. print "1..2n";
  19. my $FA = 0 ;
  20. {
  21.     sub try::TIEARRAY { bless [], "try" }
  22.     sub try::FETCHSIZE { $FA = 1 }
  23.     $FA = 0 ;
  24.     my @a ; 
  25.     tie @a, 'try' ;
  26.     my $a = @a ;
  27. }
  28. {
  29.     package LexFile ;
  30.     sub new
  31.     {
  32. my $self = shift ;
  33. unlink @_ ;
  34.   bless [ @_ ], $self ;
  35.     }
  36.     sub DESTROY
  37.     {
  38. my $self = shift ;
  39. unlink @{ $self } ;
  40.     }
  41. }
  42. sub ok
  43. {
  44.     my $no = shift ;
  45.     my $result = shift ;
  46.  
  47.     print "not " unless $result ;
  48.     print "ok $non" ;
  49. }
  50. {
  51.     package Redirect ;
  52.     use Symbol ;
  53.     sub new
  54.     {
  55.         my $class = shift ;
  56.         my $filename = shift ;
  57. my $fh = gensym ;
  58. open ($fh, ">$filename") || die "Cannot open $filename: $!" ;
  59. my $real_stdout = select($fh) ;
  60. return bless [$fh, $real_stdout ] ;
  61.     }
  62.     sub DESTROY
  63.     {
  64.         my $self = shift ;
  65. close $self->[0] ;
  66. select($self->[1]) ;
  67.     }
  68. }
  69. sub docat
  70. {
  71.     my $file = shift;
  72.     local $/ = undef;
  73.     open(CAT,$file) || die "Cannot open $file:$!";
  74.     my $result = <CAT> || "" ;
  75.     close(CAT);
  76.     return $result;
  77. }
  78. sub docat_del
  79.     my $file = shift;
  80.     local $/ = undef;
  81.     open(CAT,$file) || die "Cannot open $file: $!";
  82.     my $result = <CAT> || "" ;
  83.     close(CAT);
  84.     unlink $file ;
  85.     return $result;
  86. }   
  87. my $Dfile = "dbhash.tmp";
  88. my $Dfile2 = "dbhash2.tmp";
  89. my $Dfile3 = "dbhash3.tmp";
  90. unlink $Dfile;
  91. umask(0) ;
  92. my $redirect = "xyzt" ;
  93. {
  94. my $redirect = "xyzt" ;
  95.  {
  96.     my $redirectObj = new Redirect $redirect ;
  97. ## BEGIN dupHash
  98.     use strict ;
  99.     use BerkeleyDB ;
  100.     
  101.     my $filename = "fruit" ;
  102.     unlink $filename ;
  103.     my $db = new BerkeleyDB::Hash 
  104.                 -Filename => $filename, 
  105. -Flags    => DB_CREATE,
  106. -Property  => DB_DUP
  107.         or die "Cannot open file $filename: $! $BerkeleyDB::Errorn" ;
  108.     # Add a few key/value pairs to the file
  109.     $db->db_put("red", "apple") ;
  110.     $db->db_put("orange", "orange") ;
  111.     $db->db_put("green", "banana") ;
  112.     $db->db_put("yellow", "banana") ;
  113.     $db->db_put("red", "tomato") ;
  114.     $db->db_put("green", "apple") ;
  115.     
  116.     # print the contents of the file
  117.     my ($k, $v) = ("", "") ;
  118.     my $cursor = $db->db_cursor() ;
  119.     while ($cursor->c_get($k, $v, DB_NEXT) == 0)
  120.       { print "$k -> $vn" }
  121.       
  122.     undef $cursor ;
  123.     undef $db ;
  124. ## END dupHash
  125.     unlink $filename ;
  126.  }
  127.   #print "[" . docat($redirect) . "]" ;
  128.   ok(1, docat_del($redirect) eq <<'EOM') ;
  129. orange -> orange
  130. yellow -> banana
  131. red -> apple
  132. red -> tomato
  133. green -> banana
  134. green -> apple
  135. EOM
  136. }
  137. {
  138. my $redirect = "xyzt" ;
  139.  {
  140.     my $redirectObj = new Redirect $redirect ;
  141. ## BEGIN dupSortHash
  142.     use strict ;
  143.     use BerkeleyDB ;
  144.     
  145.     my $filename = "fruit" ;
  146.     unlink $filename ;
  147.     my $db = new BerkeleyDB::Hash 
  148.                 -Filename => $filename, 
  149. -Flags    => DB_CREATE,
  150. -Property  => DB_DUP | DB_DUPSORT
  151.         or die "Cannot open file $filename: $! $BerkeleyDB::Errorn" ;
  152.     # Add a few key/value pairs to the file
  153.     $db->db_put("red", "apple") ;
  154.     $db->db_put("orange", "orange") ;
  155.     $db->db_put("green", "banana") ;
  156.     $db->db_put("yellow", "banana") ;
  157.     $db->db_put("red", "tomato") ;
  158.     $db->db_put("green", "apple") ;
  159.     
  160.     # print the contents of the file
  161.     my ($k, $v) = ("", "") ;
  162.     my $cursor = $db->db_cursor() ;
  163.     while ($cursor->c_get($k, $v, DB_NEXT) == 0)
  164.       { print "$k -> $vn" }
  165.       
  166.     undef $cursor ;
  167.     undef $db ;
  168. ## END dupSortHash
  169.     unlink $filename ;
  170.  }
  171.   #print "[" . docat($redirect) . "]" ;
  172.   ok(2, docat_del($redirect) eq <<'EOM') ;
  173. orange -> orange
  174. yellow -> banana
  175. red -> apple
  176. red -> tomato
  177. green -> apple
  178. green -> banana
  179. EOM
  180. }