The Perl and Raku Conference 2025: Greenville, South Carolina - June 27-29 Learn more

# tests for functions documented in memcached_set.pod
use strict;
# functions explicitly tested by this file
qw(
memcached_replace_by_key
),
# other functions used by the tests
qw(
memcached_set_by_key
memcached_get_by_key
memcached_errstr
);
use lib 't/lib';
my $m1= "master-key";
my $k1= "replace-".libmemcached_test_key();
my $orig= 'original content';
my $repl= 'replaced stuff';
my $flags;
my $rc;
my $memc = libmemcached_test_create({ min_version => "1.2.4" });
plan tests => 6;
ok !memcached_replace_by_key($memc, $m1, $k1, $repl),
'should fail on non-existing key';
ok memcached_set_by_key($memc, $m1, $k1, $orig);
ok memcached_replace_by_key($memc, $m1, $k1, $repl);
my $ret= memcached_get_by_key($memc, $m1, $k1, $flags=0, $rc=0);
ok $rc, 'memcached_get_by_key rc should be true';
ok defined $ret, 'memcached_get_by_key result should be defined';
cmp_ok $ret, 'eq', $repl, 'should return replaced value';
# XXX I don't think "should fail on non-existing master key" is right
# when there's only one server
#ok !memcached_replace_by_key($memc, 'bogus-master-key', $k1, $repl),
# 'should fail on non-existing master key';