Moved almost all direct accesses to into ::File
[dbsrgits/DBM-Deep.git] / t / 22_internal_copy.t
index 25fc0ec..c2ed42a 100644 (file)
@@ -2,15 +2,13 @@
 # DBM::Deep Test
 ##
 use strict;
-use Test::More tests => 12;
+use Test::More tests => 13;
+use t::common qw( new_fh );
 
 use_ok( 'DBM::Deep' );
 
-unlink "t/test.db";
-my $db = DBM::Deep->new( "t/test.db" );
-if ($db->error()) {
-       die "ERROR: " . $db->error();
-}
+my ($fh, $filename) = new_fh();
+my $db = DBM::Deep->new( $filename );
 
 ##
 # Create structure in $db
@@ -47,3 +45,29 @@ is( scalar(keys %{$db->{hash1}}), 1, "... and only 1 key in the original" );
 
 $db->{copy} = $db->{hash2};
 is( $db->{copy}{subkey3}, 'subvalue3', "After the second copy, we're still good" );
+
+my $max_keys = 1000;
+
+my ($fh2, $filename2) = new_fh();
+{
+    my $db = DBM::Deep->new( $filename2 );
+
+    $db->{foo} = [ 1 .. 3 ];
+    for ( 0 .. $max_keys ) {
+        $db->{'foo' . $_} = $db->{foo};
+    }
+}
+
+{
+    my $db = DBM::Deep->new( $filename2 );
+
+    my $base_offset = $db->{foo}->_base_offset;
+    my $count = -1;
+    for ( 0 .. $max_keys ) {
+        $count = $_;
+        unless ( $base_offset == $db->{'foo'.$_}->_base_offset ) {
+            last;
+        }
+    }
+    is( $count, $max_keys, "We read $count keys" );
+}