package aima.test.core.unit.nlp.rank;
import static org.junit.Assert.*;
import java.util.ArrayList;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import org.junit.Ignore;
import aima.core.nlp.ranking.HITS;
import aima.core.nlp.ranking.Page;
import aima.core.nlp.ranking.PagesDataset;
public class HITSTest {
HITS hits;
@Before
public void setUp() {
Map<String,Page> pageTable = PagesDataset.loadTestPages();
hits = new HITS(pageTable);
}
@Test
public void testMatches() {
String query = "purple horse";
String queryTwo = "puurple horse";
String queryThree = "green";
String text = "This text contains the words 'purple horse' and the word 'green'";
assertTrue( hits.matches(query, text) );
assertFalse( hits.matches(queryTwo, text) );
assertTrue( hits.matches(queryThree, text) );
}
@Test
public void testNormalize() {
ArrayList<Page> pages = new ArrayList<Page>();
Page p1 = new Page(""); Page p2 = new Page("");
Page p3 = new Page(""); Page p4 = new Page("");
p1.hub = 3; p1.authority = 2;
p2.hub = 2; p2.authority = 3;
p3.hub = 1; p1.authority = 4;
p4.hub = 0; p4.authority = 10;
pages.add(p1); pages.add(p2); pages.add(p3); pages.add(p4);
// hub total will be 9 + 4 + 1 + 0 = 14
// authority total will 4 + 9 + 16 + 100 = 129
double p1HubNorm = 0.214285; double p2HubNorm = 0.142857;
hits.normalize(pages);
assertEquals( "Out of tolerance", p1HubNorm, pages.get(0).hub, 0.02);
assertEquals( "Out of tolerance", pages.get(1).hub, p2HubNorm, 0.02 );
}
@Ignore("TODO")
@Test
public void testSumInlinkHubScore() {
}
@Ignore("TODO")
@Test
public void testSumOutlinkAuthorityScore() {
}
@Ignore("TODO")
@Test
public void testConvergence() {
}
@Test
public void testGetAveDelta() {
double[] one = {0,1,2,3,4,5};
double[] two = {0.5,1.5,2.5,3.5,4.5,5.5};
double aveDelta = hits.getAveDelta(one, two);
assertEquals( aveDelta, 0.5, 0 );
}
}