Commit | Line | Data |
---|---|---|
ffed8b01 | 1 | ## |
2 | # DBM::Deep Test | |
3 | ## | |
4 | use strict; | |
2a81bf9e | 5 | use Test::More tests => 3; |
fde3db1a | 6 | use t::common qw( new_fh ); |
ffed8b01 | 7 | |
13ff93d5 | 8 | diag "This test can take up to a minute to run. Please be patient."; |
9 | ||
2a81bf9e | 10 | use_ok( 'DBM::Deep' ); |
ffed8b01 | 11 | |
fde3db1a | 12 | my ($fh, $filename) = new_fh(); |
ffed8b01 | 13 | |
2a81bf9e | 14 | my $max_levels = 1000; |
ffed8b01 | 15 | |
2a81bf9e | 16 | { |
17 | my $db = DBM::Deep->new( | |
18 | file => $filename, | |
19 | type => DBM::Deep->TYPE_ARRAY, | |
20 | ); | |
ffed8b01 | 21 | |
2a81bf9e | 22 | $db->[0] = []; |
23 | my $temp_db = $db->[0]; | |
24 | for my $k ( 0 .. $max_levels ) { | |
25 | $temp_db->[$k] = []; | |
26 | $temp_db = $temp_db->[$k]; | |
27 | } | |
28 | $temp_db->[0] = "deepvalue"; | |
ffed8b01 | 29 | } |
ffed8b01 | 30 | |
2a81bf9e | 31 | { |
32 | my $db = DBM::Deep->new( | |
33 | file => $filename, | |
34 | type => DBM::Deep->TYPE_ARRAY, | |
35 | ); | |
ffed8b01 | 36 | |
2a81bf9e | 37 | my $cur_level = -1; |
38 | my $temp_db = $db->[0]; | |
39 | for my $k ( 0 .. $max_levels ) { | |
40 | $cur_level = $k; | |
41 | $temp_db = $temp_db->[$k]; | |
42 | eval { $temp_db->isa( 'DBM::Deep' ) } or last; | |
43 | } | |
44 | is( $cur_level, $max_levels, "We read all the way down to level $cur_level" ); | |
45 | is( $temp_db->[0], "deepvalue", "And we retrieved the value at the bottom of the ocean" ); | |
ffed8b01 | 46 | } |