use strict; use lib "t/lib"; use libmemcached_test; use Test::More; my $cache = libmemcached_test_create(); plan(tests => 24); isa_ok($cache, "Cache::Memcached::libmemcached"); { $cache->set("foo", "bar", 300); my $val = $cache->get("foo"); is($val, "bar", "simple value"); } { $cache->set("foo", { bar => 1 }, 300); my $val = $cache->get("foo"); is_deeply($val, { bar => 1 }, "got complex values"); } { ok( $cache->get("foo"), "before delete returns ok"); ok( $cache->delete("foo") ); ok( ! $cache->get("foo"), "delete works"); ok( ! $cache->delete("foo") ); } { ok( $cache->set("foo", 1), "prep for incr" ); is( $cache->incr("foo"), 2, "incr returns 1 more than previous" ); is( $cache->decr("foo"), 1, "decr returns 1 less than previous" ); } { # test accessors foreach my $threshold (10_000, 5_000, 0) { $cache->set_compress_threshold($threshold); is( $cache->get_compress_threshold(), $threshold ); } foreach my $savings qw(0.2 0.5 0.8) { $cache->set_compress_savings($savings); is( $cache->get_compress_savings(), $savings ); } foreach my $enabled (0, 1, 0, 1) { $cache->set_compress_enable($enabled); is( !!$cache->get_compress_enable(), !!$enabled ); } } { # bad constructor call $cache = eval { Cache::Memcached::libmemcached->new() }; like($@, qr/No servers specified/); } { # default value in constructor $cache = libmemcached_test_create( { compress_enable => 1 } ); my $explicit = $cache->get_compress_enable; $cache = libmemcached_test_create(); my $implicit = $cache->get_compress_enable; is($explicit, $implicit); $cache = libmemcached_test_create( { compress_enable => 0, }); ok(!$cache->get_compress_enable, "check explicit compress_enable => 0"); } SKIP: { if (&Cache::Memcached::libmemcached::OPTIMIZE) { skip("OPTIMIZE flag is enabled", 1); } $cache = libmemcached_test_create( { compress_enable => 1, }); my $master_key = 'dummy_master'; my $key = 'foo_with_master'; $cache->set([ $master_key, $key ], 100); is( $cache->get([ $master_key, $key ]), 100, "get with master key" ); }