Data-Diver

 view release on metacpan or  search on metacpan

t/base.t  view on Meta::CPAN

# 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 )