#!perl -T
use strict;
use warnings;
use Test::More tests => 9;
use Algorithm::AhoCorasick qw(find_all);
my $found = find_all("To be or not to be", "be");
is_deeply($found, { 3 => [ "be" ], 16 => [ "be" ] });
my $mismatch = find_all("To be or not to be", "bet");
ok(!defined($mismatch));
sub test_fail {
my $name = shift;
eval {
find_all(@_);
fail($name);
};
if ($@) {
ok(1, $name);
}
}
test_fail("0 args");
test_fail("0 keywords", "To be or not to be");
test_fail("empty keyword", "To be or not to be", "be", "");
$found = find_all("To be or not to be", "be", "be");
is_deeply($found, { 3 => [ "be" ], 16 => [ "be" ] });
$mismatch = find_all("To be or not to be", 0);
ok(!defined($mismatch));
$found = find_all("Un chasseur qui sache chasser ne chase jamais sans son chien", "sa", "se", "si", "so", "su");
is_deeply($found, {
7 => [ "se" ],
16 => [ "sa" ],
26 => [ "se" ],
36 => [ "se" ],
46 => [ "sa" ],
51 => [ "so" ],
});
$found = find_all("Un chasseur qui sache chasser ne chase jamais sans son chien", "se", "seu");
is_deeply($found, {
7 => [ "se", "seu" ],
26 => [ "se" ],
36 => [ "se" ],
});