Test-Wiretap

 view release on metacpan or  search on metacpan

t/04-return-value-capturing.t  view on Meta::CPAN

#!/usr/bin/env perl

use Test::More tests => 16;

use lib 't/lib';
use lib 'lib';
use lib '../lib';
use Test::Wiretap;

{
  package ValueHolder;

  sub new {
    my ($class, $value) = @_;
    my $self = bless {} => $class;
    $self->set_attr($value);
    return $self;
  }
  sub set_attr {
    my ($self, $value) = @_;
    $self->{deeply_stored_value}[0] = $value;
  }
  sub get_attr {
    my ($self, $value) = @_;
    return $self->{deeply_stored_value}[0];
  }

  sub function {
    return wantarray ? qw(a list) : 'a-scalar';
  }
}

{
  package Utility;
  sub prefix_increment {
    my ($class, $obj) = @_;
    $obj->set_attr($obj->get_attr + 1);
    return $obj;
  }
}

# capturing of function args and return values
{
  my $tap = Test::Wiretap->new({
    name => 'ValueHolder::function',
    capture => 1,
  });

  is_deeply( $tap->return_values, [], '->return_values starts out sane' );
  is_deeply( $tap->return_contexts, [], '->return_contexts starts out sane' );

  my @list = ValueHolder::function(qw(a b c));
  my $scalar = ValueHolder::function(qw(d e f));
  ValueHolder::function(qw(g h i));

  is_deeply( $tap->return_values, [
    [qw(a list)],
    ['a-scalar'],
    undef,
  ], 'basic return-value capturing' );

  is_deeply( $tap->return_contexts, [
    'list',
    'scalar',
    'void',
  ], 'call context capturing' );

  $tap->reset;

  is_deeply( $tap->return_values, [], '->return_values gets reset by ->reset' );
  is_deeply( $tap->return_values, [], '->return_contexts gets reset by ->reset' );
}

# deep copying of return values + args
{

 view all matches for this distribution
 view release on metacpan -  search on metacpan

( run in 2.254 seconds using v1.00-cache-2.02-grep-82fe00e-cpan-d29e8ade9f55 )