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