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
|
use lib 't';
use Config;
use Memd;
use Test2::V0 -target => 'Cache::Memcached::Fast';
use Tie::Array;
use Tie::Hash;
use Tie::Scalar;
tie my $scalar, 'Tie::StdScalar';
tie my @array, 'Tie::StdArray';
tie my %hash, 'Tie::StdHash';
%hash = %Memd::params;
@array = @{ $hash{servers} };
$hash{servers} = \@array;
my $memd = CLASS->new( \%hash );
my $key = "Кириллица.в.UTF-8";
$scalar = $key;
ok $memd->set( $scalar, $scalar );
ok exists $memd->get_multi($scalar)->{$scalar};
is $memd->get($scalar), $key;
is $memd->get($key), $scalar;
@MyScalar::ISA = 'Tie::StdScalar';
sub MyScalar::FETCH {'Другой.ключ'}
tie my $scalar2, 'MyScalar';
ok $memd->set( $scalar2 => $scalar2 );
is $memd->get($scalar2), $scalar2;
SKIP: {
eval { require Readonly };
skip "Skipping Readonly tests because the module is not present", 3
if $@;
# 'require Readonly' as above can be used to test if the module is
# present, but won't actually work. So below we 'use Readonly',
# but in a string eval.
eval q{
use Readonly;
Readonly my $expires => 3;
Readonly my $key2 => "Третий.ключ";
ok $memd->set($key2, $key2, $expires);
ok exists $memd->get_multi($key2)->{$key2};
sleep 4;
ok !exists $memd->get_multi($key2)->{$key2};
};
}
done_testing;
|