/* * File: AbstractFrequencyBasedGlobalTermWeighterTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright April 29, 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.vector.weighter.global; import gov.sandia.cognition.math.matrix.DimensionalityMismatchException; import gov.sandia.cognition.math.matrix.SparseVectorFactory; import gov.sandia.cognition.math.matrix.Vector; import gov.sandia.cognition.math.matrix.VectorFactory; import gov.sandia.cognition.math.matrix.mtj.Vector2; import gov.sandia.cognition.math.matrix.mtj.Vector3; import org.junit.Test; import static org.junit.Assert.*; /** * Unit tests for class AbstractFrequencyBasedGlobalTermWeighter. * * @author Justin Basilico * @since 3.0 */ public class AbstractFrequencyBasedGlobalTermWeighterTest { /** * Creates a new test. */ public AbstractFrequencyBasedGlobalTermWeighterTest() { } /** * Test of constructors of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testConstructors() { VectorFactory<? extends Vector> vectorFactory = SparseVectorFactory.getDefault(); AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); assertSame(vectorFactory, instance.getVectorFactory()); assertEquals(0, instance.getDocumentCount()); assertNull(instance.getTermDocumentFrequencies()); assertNull(instance.getTermGlobalFrequencies()); vectorFactory = VectorFactory.getDefault(); instance = new DummyFrequencyBasedGlobalTermWeighter(vectorFactory); assertSame(vectorFactory, instance.getVectorFactory()); assertEquals(0, instance.getDocumentCount()); assertNull(instance.getTermDocumentFrequencies()); assertNull(instance.getTermGlobalFrequencies()); } /** * Test of clone method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testClone() { AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); AbstractFrequencyBasedGlobalTermWeighter clone = instance.clone(); assertNotSame(clone, instance); assertEquals(instance.getDocumentCount(), clone.getDocumentCount()); assertEquals(instance.getTermDocumentFrequencies(), clone.getTermDocumentFrequencies()); assertEquals(instance.getTermGlobalFrequencies(), clone.getTermDocumentFrequencies()); instance.add(new Vector3(3.0, 0.0, 1.0)); clone = instance.clone(); assertNotSame(clone, instance); assertEquals(instance.getDocumentCount(), clone.getDocumentCount()); assertEquals(instance.getTermDocumentFrequencies(), clone.getTermDocumentFrequencies()); assertNotSame(instance.getTermDocumentFrequencies(), clone.getTermDocumentFrequencies()); assertEquals(instance.getTermGlobalFrequencies(), clone.getTermGlobalFrequencies()); assertNotSame(instance.getTermGlobalFrequencies(), clone.getTermGlobalFrequencies()); } /** * Test of add method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testAdd() { AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter();assertEquals(0, instance.getDocumentCount()); assertNull(instance.getTermDocumentFrequencies()); instance.add(new Vector3(3.0, 0.0, 1.0)); assertEquals(1, instance.getDocumentCount()); assertEquals(new Vector3(1.0, 0.0, 1.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(3.0, 0.0, 1.0), instance.getTermGlobalFrequencies()); instance.add(new Vector3()); assertEquals(2, instance.getDocumentCount()); assertEquals(new Vector3(1.0, 0.0, 1.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(3.0, 0.0, 1.0), instance.getTermGlobalFrequencies()); instance.add(new Vector3(0.0, 1.0, 1.0)); assertEquals(3, instance.getDocumentCount()); assertEquals(new Vector3(1.0, 1.0, 2.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(3.0, 1.0, 2.0), instance.getTermGlobalFrequencies()); VectorFactory<?> f = VectorFactory.getDefault(); instance.add(f.copyValues(0.0, 0.0, 0.0, 2.0)); assertEquals(4, instance.getDocumentCount()); assertEquals(f.copyValues(1.0, 1.0, 2.0, 1.0), instance.getTermDocumentFrequencies()); assertEquals(f.copyValues(3.0, 1.0, 2.0, 2.0), instance.getTermGlobalFrequencies()); boolean exceptionThrown = false; try { instance.add(new Vector3()); } catch (DimensionalityMismatchException e) { exceptionThrown = true; } finally { assertTrue(exceptionThrown); } assertEquals(4, instance.getDocumentCount()); } /** * Test of remove method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testRemove() { AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); instance.add(new Vector3(3.0, 0.0, 1.0)); instance.add(new Vector3()); instance.add(new Vector3(0.0, 1.0, 1.0)); assertEquals(3, instance.getDocumentCount()); assertEquals(new Vector3(1.0, 1.0, 2.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(3.0, 1.0, 2.0), instance.getTermGlobalFrequencies()); instance.remove(new Vector3()); assertEquals(2, instance.getDocumentCount()); assertEquals(new Vector3(1.0, 1.0, 2.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(3.0, 1.0, 2.0), instance.getTermGlobalFrequencies()); instance.remove(new Vector3(3.0, 0.0, 1.0)); assertEquals(1, instance.getDocumentCount()); assertEquals(new Vector3(0.0, 1.0, 1.0), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(0.0, 1.0, 1.0), instance.getTermGlobalFrequencies()); instance.remove(new Vector3(0.0, 1.0, 1.0)); assertEquals(0, instance.getDocumentCount()); assertEquals(new Vector3(), instance.getTermDocumentFrequencies()); assertEquals(new Vector3(), instance.getTermGlobalFrequencies()); } /** * Test of getDocumentCount method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testGetDocumentCount() { int documentCount = 0; AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); assertEquals(documentCount, instance.getDocumentCount()); documentCount = 1; instance.add(new Vector3(1, 0, 0)); assertEquals(documentCount, instance.getDocumentCount()); documentCount = 2; instance.add(new Vector3(1, 0, 0)); assertEquals(documentCount, instance.getDocumentCount()); documentCount = 1; instance.remove(new Vector3(1, 0, 0)); assertEquals(documentCount, instance.getDocumentCount()); } /** * Test of getTermDocumentFrequencies method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testGetTermDocumentFrequencies() { this.testSetTermDocumentFrequencies(); } /** * Test of setTermDocumentFrequencies method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testSetTermDocumentFrequencies() { Vector termDocumentFrequencies = null; AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); assertSame(termDocumentFrequencies, instance.getTermDocumentFrequencies()); termDocumentFrequencies = new Vector2(); instance.setTermDocumentFrequencies(termDocumentFrequencies); assertSame(termDocumentFrequencies, instance.getTermDocumentFrequencies()); termDocumentFrequencies = new Vector3(); instance.setTermDocumentFrequencies(termDocumentFrequencies); assertSame(termDocumentFrequencies, instance.getTermDocumentFrequencies()); termDocumentFrequencies = null; instance.setTermDocumentFrequencies(termDocumentFrequencies); assertSame(termDocumentFrequencies, instance.getTermDocumentFrequencies()); } /** * Test of getTermGlobalFrequencies method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testGetTermGlobalFrequencies() { this.testSetTermGlobalFrequencies(); } /** * Test of setTermGlobalFrequencies method, of class AbstractFrequencyBasedGlobalTermWeighter. */ @Test public void testSetTermGlobalFrequencies() { Vector termGlobalFrequencies = null; AbstractFrequencyBasedGlobalTermWeighter instance = new DummyFrequencyBasedGlobalTermWeighter(); assertSame(termGlobalFrequencies, instance.getTermGlobalFrequencies()); termGlobalFrequencies = new Vector2(); instance.setTermGlobalFrequencies(termGlobalFrequencies); assertSame(termGlobalFrequencies, instance.getTermGlobalFrequencies()); termGlobalFrequencies = new Vector3(); instance.setTermGlobalFrequencies(termGlobalFrequencies); assertSame(termGlobalFrequencies, instance.getTermGlobalFrequencies()); termGlobalFrequencies = null; instance.setTermGlobalFrequencies(termGlobalFrequencies); assertSame(termGlobalFrequencies, instance.getTermGlobalFrequencies()); } public static class DummyFrequencyBasedGlobalTermWeighter extends AbstractFrequencyBasedGlobalTermWeighter { public DummyFrequencyBasedGlobalTermWeighter() { super(); } public DummyFrequencyBasedGlobalTermWeighter( final VectorFactory<? extends Vector> vectorFactory) { super(vectorFactory); } public int getDimensionality() { throw new UnsupportedOperationException("Not supported."); } public Vector getGlobalWeights() { throw new UnsupportedOperationException("Not supported."); } } }