X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2F09_deeparray.t;h=ad134faaf6019d754481f3278c1b183aedb4f75b;hb=b9b85d473bba31fe1f875563f9076853dc256dca;hp=aa7dcc7fea85e9c977dd203d3ad76a9bfad60430;hpb=075910edd08e4ee071dcf8b0abbde2ac00cc0daa;p=dbsrgits%2FDBM-Deep.git diff --git a/t/09_deeparray.t b/t/09_deeparray.t index aa7dcc7..ad134fa 100644 --- a/t/09_deeparray.t +++ b/t/09_deeparray.t @@ -4,39 +4,48 @@ 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 => 3; +use t::common qw( new_fh ); -plan tests => $max_levels + 3; +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", - type => DBM::Deep->TYPE_ARRAY, -); -if ($db->error()) { - die "ERROR: " . $db->error(); -} +my ($fh, $filename) = new_fh(); + +my $max_levels = 1000; + +{ + my $db = DBM::Deep->new( + file => $filename, + type => DBM::Deep->TYPE_ARRAY, + ); -$db->[0] = []; -my $temp_db = $db->[0]; -for my $k ( 0 .. $max_levels ) { - $temp_db->[$k] = []; - $temp_db = $temp_db->[$k]; + $db->[0] = []; + my $temp_db = $db->[0]; + for my $k ( 0 .. $max_levels ) { + $temp_db->[$k] = []; + $temp_db = $temp_db->[$k]; + } + $temp_db->[0] = "deepvalue"; } -$temp_db->[0] = "deepvalue"; -undef $temp_db; - -undef $db; -$db = DBM::Deep->new( - file => "t/test.db", - type => DBM::Deep->TYPE_ARRAY, -); - -$temp_db = $db->[0]; -for my $k ( 0 .. $max_levels ) { - $temp_db = $temp_db->[$k]; - isa_ok( $temp_db, 'DBM::Deep' ) || die "Whoops!"; + +{ + my $db = DBM::Deep->new( + file => $filename, + type => DBM::Deep->TYPE_ARRAY, + ); + + my $cur_level = -1; + my $temp_db = $db->[0]; + for my $k ( 0 .. $max_levels ) { + $cur_level = $k; + $temp_db = $temp_db->[$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->[0], "deepvalue", "And we retrieved the value at the bottom of the ocean" ); } -is( $temp_db->[0], "deepvalue", "And we retrieved the value at the bottom of the ocean" );