Data-Diver
view release on metacpan or search on metacpan
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl base.t'
use strict;
BEGIN {
$^W++;
if( -d 'blib' ) {
require lib;
lib->import( qw( blib lib ) );
}
}
use Test qw( plan ok skip );
sub Ok($;$$) {
@_= @_ < 3 ? reverse @_ : @_[1,0,2];
goto &ok;
}
sub Skip($$;$$) {
my $ok= shift @_;
@_= reverse @_;
unshift @_, $ok ? ''
: 'skip: prior test failed';
goto &skip;
}
BEGIN {
$|++;
plan( tests => 92 );
require Data::Diver;
Ok( 1 );
}
use Data::Diver qw( Dive DiveRef DiveVal DiveDie DiveError DiveClear );
Ok( 1 );
# Verify the synopsis:
my $root= {
top => [
{ first => 1 },
{ second => {
key => [
0, 1, 2, {
three => {
exists => 'yes',
},
},
],
},
},
],
};
Ok( 0, ()= DiveError() );
Ok( 0, eval { ()= DiveDie() }, $@ );
Ok( 1, eval { ()= DiveDie(undef) }, $@ );
Ok( 'x', eval { DiveDie('x') }, $@ );
# Sets $value to 'yes'
# ( $root->{top}[1]{second}{key}[3]{three}{exists} ):
my $value= Dive( $root, qw( top 1 second key 3 three exists ) );
Ok( 'yes', $value );
Ok( 0, ()= DiveError() );
$value= DiveRef( $root, qw( top 1 second key 3 three exists ) );
Skip(
Ok( 'SCALAR', ref($value) ),
'yes', $$value );
Ok( 'yes', eval {
DiveDie( $root, qw( top 1 second key 3 three exists ) );
}, $@ );
( run in 2.771 seconds using v1.01-cache-2.11-cpan-a49fcb8fa48 )