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