use strict;
use warnings;

use Hustle::Table;
use Test::More;
plan tests=>8;

my $table=Hustle::Table->new;


my %cache;

my %hit;

$table->add(
	{matcher=>"B", type=>"begin",	value=>"Entry2"},
	{matcher=>qr/^(A)/, 		value=>"Entry1"},
);

my $dispatcher=$table->prepare_dispatcher(cache=>\%cache);

my ($value,$capture)=$dispatcher->("A");

ok keys %cache==1 , "Cache Entry added";
ok $value->[1] eq "Entry1", "Correct value";

%cache=();

ok ((keys(%cache)==0), "Cache Entry removed");

$dispatcher->("A");
($value,$capture)=$dispatcher->("A");


ok keys %cache==1 , "Cache Entry added";
ok $value->[1] eq "Entry1", "Correct value";
ok $capture->[0] eq "A", "Correct Capture";

($value,$capture)=$dispatcher->("A");
ok $value->[1] eq "Entry1", "Correct value";
ok $capture->[0] eq "A", "Correct Capture";