Refactored to _descend to fix the recursion bug
[dbsrgits/DBM-Deep.git] / t / 38_data_sector_size.t
1 use strict;
2 use warnings FATAL => 'all';
3
4 use Test::More;
5
6 use t::common qw( new_fh );
7
8 sub do_stuff {
9     my ($db) = @_;
10
11     $db->{foo}{bar} = [ 1 .. 3 ];
12 }
13
14 sub verify {
15     my ($db) = @_;
16
17     cmp_ok( $db->{foo}{bar}[2], '==', 3, "Correct value found" );
18 }
19
20 use_ok( 'DBM::Deep' );
21
22 my %sizes;
23
24 {
25     my ($fh, $filename) = new_fh();
26     {
27         my $db = DBM::Deep->new(
28             file => $filename,
29             data_sector_size => 32,
30         );
31
32         do_stuff( $db );
33     }
34
35     $sizes{32} = -s $filename;
36
37     {
38         my $db = DBM::Deep->new( file => $filename );
39         verify( $db );
40         $db->_get_self->_engine->storage->close( $db->_get_self );
41     }
42 }
43
44 {
45     my ($fh, $filename) = new_fh();
46     {
47         my $db = DBM::Deep->new(
48             file => $filename,
49             data_sector_size => 64,
50         );
51
52         do_stuff( $db );
53     }
54
55     $sizes{64} = -s $filename;
56
57     {
58         my $db = DBM::Deep->new( $filename );
59         verify( $db );
60          $db->_get_self->_engine->storage->close( $db->_get_self );
61     }
62 }
63
64 {
65     my ($fh, $filename) = new_fh();
66     {
67         my $db = DBM::Deep->new(
68             file => $filename,
69             data_sector_size => 128,
70         );
71
72         do_stuff( $db );
73     }
74
75     $sizes{128} = -s $filename;
76
77     {
78         my $db = DBM::Deep->new( $filename );
79         verify( $db );
80          $db->_get_self->_engine->storage->close( $db->_get_self );
81     }
82 }
83
84 {
85     my ($fh, $filename) = new_fh();
86     {
87         my $db = DBM::Deep->new(
88             file => $filename,
89             data_sector_size => 256,
90         );
91
92         do_stuff( $db );
93     }
94
95     $sizes{256} = -s $filename;
96
97     {
98         my $db = DBM::Deep->new( $filename );
99         verify( $db );
100          $db->_get_self->_engine->storage->close( $db->_get_self );
101     }
102 }
103
104 cmp_ok( $sizes{256}, '>', $sizes{128}, "Filesize for 256 > filesize for 128" );
105 cmp_ok( $sizes{128}, '>', $sizes{64}, "Filesize for 128 > filesize for 64" );
106 cmp_ok( $sizes{64}, '>', $sizes{32}, "Filesize for 64 > filesize for 32" );
107
108 done_testing;