Commit | Line | Data |
ffed8b01 |
1 | ## |
2 | # DBM::Deep Test |
3 | ## |
4 | use strict; |
5 | use Test::More tests => 5; |
6 | |
7 | use_ok( 'DBM::Deep' ); |
8 | |
9 | unlink "t/test.db"; |
10 | my $db = DBM::Deep->new( |
11 | file => "t/test.db", |
12 | autoflush => 1, |
13 | ); |
14 | if ($db->error()) { |
15 | die "ERROR: " . $db->error(); |
16 | } |
17 | |
18 | ## |
19 | # create some unused space |
20 | ## |
21 | $db->{key1} = "value1"; |
22 | $db->{key2} = "value2"; |
23 | |
24 | $db->{a} = {}; |
25 | $db->{a}{b} = []; |
26 | $db->{a}{c} = 'value2'; |
27 | |
28 | my $b = $db->{a}->{b}; |
29 | $b->[0] = 1; |
30 | $b->[1] = 2; |
31 | $b->[2] = {}; |
32 | $b->[2]->{c} = []; |
33 | |
34 | my $c = $b->[2]->{c}; |
35 | $c->[0] = 'd'; |
36 | $c->[1] = {}; |
37 | $c->[1]->{e} = 'f'; |
38 | |
39 | undef $c; |
40 | undef $b; |
41 | |
42 | delete $db->{key2}; |
43 | delete $db->{a}{b}; |
44 | |
45 | ## |
46 | # take byte count readings before, and after optimize |
47 | ## |
48 | my $before = (stat($db->fh()))[7]; |
49 | my $result = $db->optimize(); |
50 | my $after = (stat($db->fh()))[7]; |
51 | |
52 | if ($db->error()) { |
53 | die "ERROR: " . $db->error(); |
54 | } |
55 | |
56 | ok( $result ); |
57 | ok( $after < $before ); # make sure file shrunk |
58 | |
59 | is( $db->{key1}, 'value1', "key1's value is still there after optimize" ); |
60 | is( $db->{a}{c}, 'value2', "key2's value is still there after optimize" ); |