Test-AutoMock

 view release on metacpan or  search on metacpan

lib/Test/AutoMock/Mock/TieArray.pm  view on Meta::CPAN

package Test::AutoMock::Mock::TieArray;
use strict;
use warnings;

sub TIEARRAY {
    my ($class, $manager) = @_;

    bless \$manager => $class;
}

sub FETCH {
    my ($self, $key) = @_;
    my $manager = $$self;
    my $arrayref = $manager->tie_array;
    my $method_name = "[$key]";

    $manager->_call_method($method_name, [], sub {
        my $self = shift;
        $arrayref->[$key] = $manager->child($method_name)->mock
                                               unless exists $arrayref->[$key];
        $arrayref->[$key];
    });
}

sub STORE {
    my ($self, $key, $value) = @_;
    my $manager = $$self;
    my $arrayref = $manager->tie_array;

    $manager->_call_method("[$key]", [$value], sub {
        my ($self, $value) = @_;
        $arrayref->[$key] = $value;
    });
}

sub FETCHSIZE {
    my $self = shift;
    my $manager = $$self;
    my $arrayref = $manager->tie_array;

    $manager->_call_method(FETCHSIZE => [], sub {
        my $self = shift;
        $#$arrayref + 1;
    });
}

sub STORESIZE {
    my ($self, $count) = @_;
    my $manager = $$self;
    my $arrayref = $manager->tie_array;

    $manager->_call_method(STORESIZE => [$count], sub {
        my ($self, $count) = @_;
        $#$arrayref = $count - 1;
    });
}

sub CLEAR {
    my $self = shift;
    my $manager = $$self;
    my $arrayref = $manager->tie_array;

    $manager->_call_method(CLEAR => [], sub {
        my $self = shift;
        @$arrayref = ();
    });
}

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

( run in 1.294 second using v1.00-cache-2.02-grep-82fe00e-cpan-9e6bc14194b6 )