Test-AutoMock
view release on metacpan - search on metacpan
view release on metacpan or search on metacpan
lib/Test/AutoMock/Mock/TieHash.pm view on Meta::CPAN
package Test::AutoMock::Mock::TieHash;
use strict;
use warnings;
sub TIEHASH {
my ($class, $manager) = @_;
bless \$manager => $class;
}
sub FETCH {
my ($self, $key) = @_;
my $manager = $$self;
my $hashref = $manager->tie_hash;
my $method_name = "{$key}";
$manager->_call_method($method_name, [], sub {
my $self = shift;
$hashref->{$key} = $manager->child($method_name)->mock
unless exists $hashref->{$key};
$hashref->{$key};
});
}
sub STORE {
my ($self, $key, $value) = @_;
my $manager = $$self;
my $hashref = $manager->tie_hash;
$manager->_call_method("{$key}", [$value], sub {
my ($self, $value) = @_;
$hashref->{$key} = $value;
});
}
sub DELETE {
my ($self, $key) = @_;
my $manager = $$self;
my $hashref = $manager->tie_hash;
$manager->_call_method(DELETE => [$key], sub {
my ($self, $key) = @_;
delete $hashref->{$key};
});
}
sub CLEAR {
my $self = shift;
my $manager = $$self;
my $hashref = $manager->tie_hash;
$manager->_call_method(CLEAR => [], sub {
my $self = shift;
%$hashref = ();
});
}
sub EXISTS {
my ($self, $key) = @_;
my $manager = $$self;
my $hashref = $manager->tie_hash;
$manager->_call_method(EXISTS => [$key], sub {
my ($self, $key) = @_;
exists $hashref->{$key};
});
}
view all matches for this distributionview release on metacpan - search on metacpan
( run in 1.780 second using v1.00-cache-2.02-grep-82fe00e-cpan-f73e49a70403 )