X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F08_deephash.t;h=5e022c3300dd2ec653b4db25e37aa3552ccbedea;hb=5c0756fcb3b5c7ca76c52be6c7c9d78841e5d57b;hp=6e349d806aa8db6c4bd6572c17a030b7036f4484;hpb=95967a5ee0a385bc0107632a13233a2be0f36613;p=dbsrgits%2FDBM-Deep.git diff --git a/t/08_deephash.t b/t/08_deephash.t index 6e349d8..5e022c3 100644 --- a/t/08_deephash.t +++ b/t/08_deephash.t @@ -4,54 +4,67 @@ use strict; use Test::More; -my $max_levels = 1000; +plan skip_all => "You must set \$ENV{LONG_TESTS} to run the long tests" + unless $ENV{LONG_TESTS}; plan tests => 5; +use t::common qw( new_fh ); + +diag "This test can take up to a minute to run. Please be patient."; use_ok( 'DBM::Deep' ); -unlink "t/test.db"; -my $db = DBM::Deep->new( - file => "t/test.db", -); +my ($fh, $filename) = new_fh(); -## -# basic deep hash -## -$db->{company} = {}; -$db->{company}->{name} = "My Co."; -$db->{company}->{employees} = {}; -$db->{company}->{employees}->{"Henry Higgins"} = {}; -$db->{company}->{employees}->{"Henry Higgins"}->{salary} = 90000; +my $max_levels = 1000; -is( $db->{company}->{name}, "My Co.", "Set and retrieved a second-level value" ); -is( $db->{company}->{employees}->{"Henry Higgins"}->{salary}, 90000, "Set and retrieved a fourth-level value" ); +{ + my $db = DBM::Deep->new( + file => $filename, + fh => $fh, + type => DBM::Deep->TYPE_HASH, + ); -## -# super deep hash -## -$db->{base_level} = {}; -my $temp_db = $db->{base_level}; + ## + # basic deep hash + ## + $db->{company} = {}; + $db->{company}->{name} = "My Co."; + $db->{company}->{employees} = {}; + $db->{company}->{employees}->{"Henry Higgins"} = {}; + $db->{company}->{employees}->{"Henry Higgins"}->{salary} = 90000; + + is( $db->{company}->{name}, "My Co.", "Set and retrieved a second-level value" ); + is( $db->{company}->{employees}->{"Henry Higgins"}->{salary}, 90000, "Set and retrieved a fourth-level value" ); + + ## + # super deep hash + ## + $db->{base_level} = {}; + my $temp_db = $db->{base_level}; -for my $k ( 0 .. $max_levels ) { - $temp_db->{"level$k"} = {}; - $temp_db = $temp_db->{"level$k"}; + for my $k ( 0 .. $max_levels ) { + $temp_db->{"level$k"} = {}; + $temp_db = $temp_db->{"level$k"}; + } + $temp_db->{deepkey} = "deepvalue"; } -$temp_db->{deepkey} = "deepvalue"; -undef $temp_db; - -undef $db; -$db = DBM::Deep->new( - file => "t/test.db", - type => DBM::Deep->TYPE_HASH, -); - -my $cur_level = -1; -$temp_db = $db->{base_level}; -for my $k ( 0 .. $max_levels ) { - $cur_level = $k; - $temp_db = $temp_db->{"level$k"}; - eval { $temp_db->isa( 'DBM::Deep' ) } or last; + +{ + open $fh, '+<', $filename; + my $db = DBM::Deep->new( + file => $filename, + fh => $fh, + type => DBM::Deep->TYPE_HASH, + ); + + my $cur_level = -1; + my $temp_db = $db->{base_level}; + for my $k ( 0 .. $max_levels ) { + $cur_level = $k; + $temp_db = $temp_db->{"level$k"}; + eval { $temp_db->isa( 'DBM::Deep' ) } or last; + } + is( $cur_level, $max_levels, "We read all the way down to level $cur_level" ); + is( $temp_db->{deepkey}, "deepvalue", "And we retrieved the value at the bottom of the ocean" ); } -is( $cur_level, $max_levels, "We read all the way down to level $cur_level" ); -is( $temp_db->{deepkey}, "deepvalue", "And we retrieved the value at the bottom of the ocean" );