Converted to use the intermediate keyloc so that keys work under transactions
[dbsrgits/DBM-Deep.git] / t / 03_bighash.t
1 ##
2 # DBM::Deep Test
3 ##
4 use strict;
5 use Test::More tests => 5;
6 use Test::Deep;
7 use t::common qw( new_fh );
8
9 use_ok( 'DBM::Deep' );
10
11 my ($fh, $filename) = new_fh();
12 my $db = DBM::Deep->new(
13         file => $filename,
14         type => DBM::Deep->TYPE_HASH,
15 );
16
17 ##
18 # put/get many keys
19 ##
20 my $max_keys = 4000;
21
22 for ( 0 .. $max_keys ) {
23     $db->put( "hello $_" => "there " . $_ * 2 );
24 }
25
26 my $count = -1;
27 for ( 0 .. $max_keys ) {
28     $count = $_;
29     unless ( $db->get( "hello $_" ) eq "there " . $_ * 2 ) {
30         last;
31     };
32 }
33 is( $count, $max_keys, "We read $count keys" );
34
35 my @keys = sort keys %$db;
36 cmp_ok( scalar(@keys), '==', $max_keys + 1, "Number of keys is correct" );
37 my @control =  sort map { "hello $_" } 0 .. $max_keys;
38 cmp_deeply( \@keys, \@control, "Correct keys are there" );
39
40 $db->clear;
41 cmp_ok( scalar(keys %$db), '==', 0, "Number of keys after clear() is correct" );