/*
* File: NGramFilterTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright May 01, 2009, Sandia Corporation.
* Under the terms of Contract DE-AC04-94AL85000, there is a non-exclusive
* license for use of this work by or on behalf of the U.S. Government. Export
* of this program may require a license from the United States Government.
* See CopyrightHistory.txt for complete details.
*
*/
package gov.sandia.cognition.text.term.filter;
import gov.sandia.cognition.text.term.DefaultTermNGram;
import gov.sandia.cognition.text.term.DefaultTerm;
import gov.sandia.cognition.text.term.DefaultTermOccurrence;
import gov.sandia.cognition.text.term.TermNGram;
import gov.sandia.cognition.text.term.Term;
import gov.sandia.cognition.text.term.TermOccurrence;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Unit tests for class NGramFilter.
*
* @author Justin Basilico
* @since 3.0
*/
public class NGramFilterTest
{
/**
* Creates a new test.
*/
public NGramFilterTest()
{
}
/**
* Test of constructors of class NGramFilter.
*/
@Test
public void testConstructors()
{
int size = 2;
NGramFilter instance = new NGramFilter();
assertEquals(size, instance.getSize());
size = 3;
instance = new NGramFilter(size);
assertEquals(size, instance.getSize());
}
/**
* Test of clone method, of class NGramFilter.
*/
@Test
public void testClone()
{
NGramFilter instance = new NGramFilter();
NGramFilter clone = instance.clone();
assertEquals(instance.getSize(), clone.getSize());
}
/**
* Test of filterTerms method, of class NGramFilter.
*/
@Test
public void testFilterTerms()
{
int size = 3;
NGramFilter instance = new NGramFilter(size);
Term a = new DefaultTerm("a");
Term b = new DefaultTerm("b");
Term c = new DefaultTerm("c");
Term d = new DefaultTerm("d");
LinkedList<TermOccurrence> terms = new LinkedList<TermOccurrence>();
terms.add(new DefaultTermOccurrence(a, 2, 1));
terms.add(new DefaultTermOccurrence(b, 4, 5));
terms.add(new DefaultTermOccurrence(c, 10, 14));
terms.add(new DefaultTermOccurrence(d, 55, 3));
Collection<TermOccurrence> result = instance.filterTerms(terms);
TermOccurrence occurrence;
Iterator<TermOccurrence> it = result.iterator();
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(2, occurrence.getStart());
assertEquals(1, occurrence.getLength());
assertEquals(new DefaultTermNGram(null, null, a), occurrence.getTerm());
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(2, occurrence.getStart());
assertEquals(7, occurrence.getLength());
assertEquals(new DefaultTermNGram(null, a, b), occurrence.getTerm());
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(2, occurrence.getStart());
assertEquals(22, occurrence.getLength());
assertEquals(new DefaultTermNGram(a, b, c), occurrence.getTerm());
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(4, occurrence.getStart());
assertEquals(54, occurrence.getLength());
assertEquals(new DefaultTermNGram(b, c, d), occurrence.getTerm());
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(10, occurrence.getStart());
assertEquals(48, occurrence.getLength());
assertEquals(new DefaultTermNGram(c, d, null), occurrence.getTerm());
assertTrue(it.hasNext());
occurrence = it.next();
assertEquals(55, occurrence.getStart());
assertEquals(3, occurrence.getLength());
assertEquals(new DefaultTermNGram(d, null, null), occurrence.getTerm());
assertFalse(it.hasNext());
}
/**
* Test of getSize method, of class NGramFilter.
*/
@Test
public void testGetSize()
{
this.testSetSize();
}
/**
* Test of setSize method, of class NGramFilter.
*/
@Test
public void testSetSize()
{
int size = 2;
NGramFilter instance = new NGramFilter();
assertEquals(size, instance.getSize());
size = 3;
instance.setSize(size);
assertEquals(size, instance.getSize());
size = 10;
instance.setSize(size);
assertEquals(size, instance.getSize());
boolean exceptionThrown = false;
try
{
instance.setSize(1);
}
catch (IllegalArgumentException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
assertEquals(size, instance.getSize());
exceptionThrown = false;
try
{
instance.setSize(0);
}
catch (IllegalArgumentException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
assertEquals(size, instance.getSize());
exceptionThrown = false;
try
{
instance.setSize(-1);
}
catch (IllegalArgumentException e)
{
exceptionThrown = true;
}
finally
{
assertTrue(exceptionThrown);
}
assertEquals(size, instance.getSize());
}
}