#!perl
use lib 'C:/Users/emma.EBI/Fuzzy/cpan-distribution/FuzzyRecogniser/lib';
use Test::More;
use EBI::FGPT::FuzzyRecogniser;
use Data::Dumper;
# turn off info for test
use Log::Log4perl qw(:easy);
Log::Log4perl->easy_init($WARN);
BEGIN { use_ok('EBI::FGPT::FuzzyRecogniser'); }
require_ok('EBI::FGPT::FuzzyRecogniser');
my $dirname = File::Basename::dirname($0);
#uses a chunk of an efo obo file as the ontology file
$abs_path = File::Spec->catfile( $dirname, 'data', 'efo_obo.txt' );
my $fuzzy = EBI::FGPT::FuzzyRecogniser->new( obofile => $abs_path ); # create an object
#test exact match
my $x = $fuzzy->find_match('submitter');
isa_ok( $x, 'HASH' ); #check is a hash
is( $x->{'similarity'}, 100, 'similarity score equal to 100' );
is( $x->{'type'},
'EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label',
'Type is EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label' );
is( $x->{'term'}->accession(), 'EFO:0001741', 'EFO accession is equal to EFO:0001741 ' );
is( $x->{'value'}, 'submitter', 'Value matched is submitter' );
#test value with a mis-spelling
$x = $fuzzy->find_match('cand7la');
isa_ok( $x, 'HASH' ); #check is a hash
isnt( $x->{'similarity'}, 100, 'similarity score is not equal to 100' );
is( $x->{'type'},
'EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label',
'Type is EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label' );
is( $x->{'term'}->accession(), 'UO:0000014', 'EFO accession is equal to UO:0000014' );
is( $x->{'value'}, 'candela', 'Term matched is candela' );
#test value with a odd characters
$x = $fuzzy->find_match('h@man-herpesvirus/~8');
isa_ok( $x, 'HASH' ); #check is a hash
isnt( $x->{'similarity'}, 100, 'similarity score is not equal to 100' );
is( $x->{'type'},
'EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label',
'Type is EBI::FGPT::FuzzyRecogniser::OntologyTerm::Label' );
is( $x->{'term'}->accession(), 'EFO:0002612', 'EFO accession is equal to EFO:0002612' );
is( $x->{'value'}, 'human herpesvirus 8', 'Term matched is human herpesvirus 8' );
#test value with synonym
$x = $fuzzy->find_match('BRCA1');
isa_ok( $x, 'HASH' ); #check is a hash
is( $x->{'similarity'}, 100, 'similarity score is equal to 100' );
is( $x->{'type'},
'EBI::FGPT::FuzzyRecogniser::OntologyTerm::Synonym',
'Type is EBI::FGPT::FuzzyRecogniser::OntologyTerm::Synonym' );
is( $x->{'term'}->accession(), 'EFO:0002611', 'EFO accession is equal to EFO:0002611' );
is( $x->{'term'}->label(),
'hereditary breast and ovarian cancer',
'Term matched is hereditary breast and ovarian cancer' );
done_testing($number_of_tests_run);