Class-DBI-Frozen-301
view release on metacpan or search on metacpan
lib/Class/DBI/Frozen/301.pm view on Meta::CPAN
use Carp ();
use List::Util;
use UNIVERSAL::moniker;
use vars qw($Weaken_Is_Available);
BEGIN {
$Weaken_Is_Available = 1;
eval {
require Scalar::Util;
import Scalar::Util qw(weaken);
};
if ($@) {
$Weaken_Is_Available = 0;
}
}
use overload
'""' => sub { shift->stringify_self },
bool => sub { not shift->_undefined_primary },
fallback => 1;
lib/Class/DBI/Frozen/301.pm view on Meta::CPAN
}
unless (defined($obj = $Live_Objects{$obj_key})) {
# not in the object_index, or we don't have all keys yet
$obj = bless {}, $class;
$obj->_attribute_store(%$data);
# don't store it unless all keys are present
if ($obj_key && $Weaken_Is_Available) {
weaken($Live_Objects{$obj_key} = $obj);
# time to clean up your room?
$class->purge_dead_from_object_index
if ++$Init_Count % $class->purge_object_index_every == 0;
}
}
return $obj;
}
t/02-Film.t view on Meta::CPAN
isa_ok $byebye, 'DeletingFilm';
isa_ok $byebye, 'Film';
ok(Film->retrieve('Goodbye Norma Jean'), "Fetch it back again");
}
my $film;
eval { $film = Film->retrieve('Goodbye Norma Jean') };
ok !$film, "It destroys itself";
}
SKIP: {
skip "Scalar::Util::weaken not available", 3
if !$Class::DBI::Weaken_Is_Available;
# my bad taste is your bad taste
my $btaste = Film->retrieve('Bad Taste');
my $btaste2 = Film->retrieve('Bad Taste');
is Scalar::Util::refaddr($btaste), Scalar::Util::refaddr($btaste2),
"Retrieving twice gives ref to same object";
$btaste2->remove_from_object_index;
my $btaste3 = Film->retrieve('Bad Taste');
( run in 0.934 second using v1.01-cache-2.11-cpan-65fba6d93b7 )