The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl WordNet-SenseRelate-WordToSet.t'

# $Id: WordNet-SenseRelate-WordToSet.t,v 1.4 2008/04/07 03:28:36 tpederse Exp $

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test::More tests => 15;

use_ok WordNet::SenseRelate::WordToSet;
use_ok WordNet::QueryData;

#########################

# Insert your test code below, the Test::More module is use()ed here so read
# its man page ( perldoc Test::More ) for help writing this test script.

# set up a few different WordToSet Objects

$qd = WordNet::QueryData->new;
ok ($qd, "construct QueryData");

%options = (measure => 'WordNet::Similarity::lesk',
	       wordnet => $qd);

$mod = WordNet::SenseRelate::WordToSet->new (%options);
ok ($mod, "construct WordToSet object for lesk");

%options = (measure => 'WordNet::Similarity::jcn',
	       wordnet => $qd);

$modjcn = WordNet::SenseRelate::WordToSet->new (%options);
ok ($modjcn, "construct WordToSet object for jcn");

%options = (measure => 'WordNet::Similarity::wup',
	       wordnet => $qd);

$modwup = WordNet::SenseRelate::WordToSet->new (%options);
ok ($modwup, "construct WordToSet object for wup");

# --------------------------------------------------------
# java the language
# --------------------------------------------------------

$res = $mod->disambiguate (target => 'java',
			      context => [qw/programming_language applet web/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#3');
# --------------------------------------------------------

$res = $modwup->disambiguate (target => 'java',
			      context => [qw/programming_language applet web/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#3');

# --------------------------------------------------------

$res = $modjcn->disambiguate (target => 'java',
			      context => [qw/programming_language applet web/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#2');

# -------------------------------------------------------------------------
# java the beverage
# -------------------------------------------------------------------------

$res = $mod->disambiguate (target => 'java',
			      context => [qw/drink coffee beverage/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#2');

# -------------------------------------------------------------------------

$res = $modjcn->disambiguate (target => 'java',
			      context => [qw/drink coffee beverage/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#2');

# -------------------------------------------------------------------------

$res = $modwup->disambiguate (target => 'java',
			      context => [qw/drink coffee beverage/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'java#n#2');

# -------------------------------------------------------------------------
# sir winston churchill
# -------------------------------------------------------------------------

$res = $mod->disambiguate (target => 'winston_churchill',
			      context => [qw/england world_war_two/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'winston_churchill#n#1');

# -------------------------------------------------------------------------

$res = $modjcn->disambiguate (target => 'winston_churchill',
			      context => [qw/england world_war_two/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

# can't find anything because of jcn needing info content values
is ($best, '');

# -------------------------------------------------------------------------

$res = $modwup->disambiguate (target => 'winston_churchill',
			      context => [qw/england world_war_two/]);

$best_score = -100;
$best = '';
foreach $key (keys %$res) {
    next unless defined $res->{$key};
    if ($res->{$key} > $best_score) {
	$best_score = $res->{$key};
	$best = $key;
    }
}

is ($best, 'winston_churchill#n#1');