1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
#!perl -T
use strict;
use warnings;
use Test::More tests => 20;
use Cache::Memcached;
use Memoize::Memcached qw( :all ),
memcached => {
servers => [qw( 127.0.0.1:11211 )],
},
;
my $side_effect;
sub memo_this_00 {
my $x = shift;
$side_effect = 'side effect';
return $x;
}
sub memo_this_01 {
my $x = shift;
$side_effect = 'side effect';
return $x;
}
SKIP: {
{
my @servers = qw( 127.0.0.1:11211 );
my $memcached = Cache::Memcached->new(
servers => \@servers,
)
or do {
local $, = ', ';
skip "No memcached server running on hosts @servers", 20;
};
my $stats = do {
# This call will throw lots of warnings if there's no memcached
# server.
local $SIG{__WARN__} = sub {};
$memcached->stats;
};
skip "No memcached server running on hosts @servers", 20
unless $stats and $stats->{hosts};
}
ok(memoize_memcached('memo_this_00'), "Memoizing of 'memo_this_00'");
ok(memoize_memcached('memo_this_01'), "Memoizing of 'memo_this_01'");
ok(flush_cache(), "Global flush cache");
$side_effect = 'none';
is(memo_this_00(5), 5, "Memoized function 'memo_this_00' returns correct value");
is($side_effect, 'side effect', "Memoized function 'memo_this_00' side effect detected");
$side_effect = 'none';
is(memo_this_00(5), 5, "Memoized function 'memo_this_00' returns correct value");
is($side_effect, 'none', "Memoized function 'memo_this_00' side effect not detected");
$side_effect = 'none';
is(memo_this_01(5), 5, "Memoized function 'memo_this_01' returns correct value");
is($side_effect, 'side effect', "Memoized function 'memo_this_01' side effect detected");
$side_effect = 'none';
is(memo_this_01(5), 5, "Memoized function 'memo_this_01' returns correct value");
is($side_effect, 'none', "Memoized function 'memo_this_01' side effect not detected");
ok(flush_cache(memo_this_00 => 5), "Flush cache for 'memo_this_00' with arg (5)");
$side_effect = 'none';
is(memo_this_00(5), 5, "Memoized function 'memo_this_00' returns correct value");
is($side_effect, 'side effect', "Memoized function 'memo_this_00' side effect detected");
$side_effect = 'none';
is(memo_this_01(5), 5, "Memoized function 'memo_this_01' returns correct value");
is($side_effect, 'none', "Memoized function 'memo_this_01' side effect not detected");
flush_cache('memo_this_00');
$side_effect = 'none';
is(memo_this_00(5), 5, "Memoized function 'memo_this_00' returns correct value");
is($side_effect, 'side effect', "Memoized function 'memo_this_00' side effect detected");
$side_effect = 'none';
is(memo_this_01(5), 5, "Memoized function 'memo_this_01' returns correct value");
is($side_effect, 'side effect', "Memoized function 'memo_this_01' side effect detected");
flush_cache();
}
|