The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;
use Cache::LRU::WithExpires;
use Time::HiRes qw(sleep);

subtest 'avalivele' => sub {
    my $cache = Cache::LRU::WithExpires->new;
    $cache->set('foo', 'bar', 1);
    is $cache->get('foo'), 'bar';
};

subtest 'expires' => sub {
    my $cache = Cache::LRU::WithExpires->new;
    $cache->set('foo', 'bar', 0.1);
    sleep 0.2;
    is $cache->get('foo'), undef;
};

subtest 'no expires' => sub {
    my $cache = Cache::LRU::WithExpires->new;
    $cache->set('foo', 'bar');
    sleep 0.1;
    is $cache->get('foo'), 'bar';
};

subtest '0 equals to no expires' => sub {
    my $cache = Cache::LRU::WithExpires->new;
    $cache->set('foo', 'bar', 0);
    sleep 0.1;
    is $cache->get('foo'), 'bar';
};

subtest 'minus' => sub {
    my $cache = Cache::LRU::WithExpires->new;
    $cache->set('foo', 'bar', -10);
    is $cache->get('foo'), undef;
};

done_testing;