Finished most of the renamings and updated Changes to reflect the new API
[dbsrgits/DBM-Deep.git] / t / 12optimize.t
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" );