The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl

use Test::More tests => 7;
use Test::Output;

use Biblio::Thesaurus;
use Biblio::Thesaurus::ModRewrite;

sub proc {
	my $code = shift;
	my $obj = thesaurusLoad('examples/geo.iso');
	my $t = Biblio::Thesaurus::ModRewrite->new($obj);
	$t->process($code);
}

# 1 -- term relation term
output_is { proc(<<'CODE') } <<'OUTPUT','','term relation term';
Braga 'CITY-OF' Portugal => sub { print "found\n"; }.
CODE
found
OUTPUT

# 2 -- $t relation term
output_is { proc(<<'CODE') } <<'OUTPUT','','$t relation term';
$city 'CITY-OF' Portugal => sub { print $city . "\n"; }.
CODE
Braga
Guimaraes
Lisboa
Porto
OUTPUT

# 3 -- term relation $t
output_is { proc(<<'CODE') } <<'OUTPUT','','term relation $t';
Guimaraes 'CITY-OF' $country => sub { print $country . "\n"; }.
CODE
Portugal
OUTPUT

# 4 -- term $r term
output_is { proc(<<'CODE') } <<'OUTPUT','','term $r term';
Braga $relation Portugal => sub { print "$relation\n"; }.
CODE
CITY-OF
OUTPUT

# 5 -- $t relation $t
output_is { proc(<<'CODE') } <<'OUTPUT','','$t relation $t';
$a 'CITY-OF' $b => sub { print "$a @ $b\n"; }.
CODE
Braga @ Braga
Braga @ Portugal
Bruxelas @ Belgica
Guimaraes @ Portugal
Lisboa @ Portugal
Londres @ Inglaterra
Madrid @ Espanha
Paris @ Franca
Porto @ Portugal
Vigo @ Espanha
OUTPUT

# 6 -- $t relation $t
output_is { proc(<<'CODE') } '', <<'OUTPUT','$t relation $t';
$a 'CITY-OF' $a => sub { warn "CITY-OF reflexiva para $a\n"; }.
CODE
CITY-OF reflexiva para Braga
OUTPUT

# 7 -- $t relation term -- empty $t
output_is { proc(<<'CODE') } '','','$t relation term -- empty $t';
$city 'CITY-OF' Russia => sub { print $city; }.
CODE