package gov.sandia.cognition.statistics;
import gov.sandia.cognition.math.matrix.Vector;
import gov.sandia.cognition.math.matrix.VectorFactory;
import org.junit.Test;
import static org.junit.Assert.*;
/**
* Unit test for chi-squared similarity.
*
* @author trbroun
*/
public class ChiSquaredSimilarityTest
{
VectorFactory<? extends Vector> vectorFactory = VectorFactory.getDenseDefault();
double[] value1 = {1,0,0,1,0,0,0,1,0,0};
Vector vector1 = vectorFactory.copyArray(value1);
double[] value2 = {0,1,0,0,1,0,0,0,1,0};
Vector vector2 = vectorFactory.copyArray(value2);
double[] value3 = {1,1,1,1,1,1,1,1,1,1};
Vector vector3 = vectorFactory.copyArray(value3);
double[] value4 = {0,0};
Vector vector4 = vectorFactory.copyArray(value4);
double[] value5 = {0,-1,0,0,1,0,0,0,-1,0};
Vector vector5 = vectorFactory.copyArray(value2);
double[] value6 = {0,0,0,0,0,0,0,0,0,0};
Vector vector6 = vectorFactory.copyArray(value6);
ChiSquaredSimilarity v12 = new ChiSquaredSimilarity(vector1, vector2);
ChiSquaredSimilarity v11 = new ChiSquaredSimilarity(vector1, vector1);
ChiSquaredSimilarity v21 = new ChiSquaredSimilarity(vector2, vector1);
ChiSquaredSimilarity v13 = new ChiSquaredSimilarity(vector1, vector3);
ChiSquaredSimilarity v14 = new ChiSquaredSimilarity(vector1, vector4);
ChiSquaredSimilarity v15 = new ChiSquaredSimilarity(vector1, vector5);
ChiSquaredSimilarity v16 = new ChiSquaredSimilarity(vector1, vector6);
/**
* Test of compute method, of class ChiSquaredSimilarity.
*/
@Test
public void testCompute()
{
assertEquals(6., v12.compute(), 0.0000001);
assertEquals(6., v21.compute(), 0.0000001);
assertEquals(4.55, v13.compute(), 0.0000001);
assertEquals(6., v15.compute(), 0.0000001);
assertEquals(0., v11.compute(), 0.0000001);
try {
v14.compute();
assertTrue(false);
} catch(RuntimeException e) {
}
try {
v16.compute();
assertTrue(false);
} catch(RuntimeException e) {
}
}
/**
* Test of completeCompute method, of class ChiSquaredSimilarity.
*/
@Test
public void testComputeCumulativeProbabilityValue()
{
assertEquals(0.26008169, v12.computeCumulativeProbabilityValue(), 0.0000001);
assertEquals(0.12835824, v13.computeCumulativeProbabilityValue(), 0.0000001);
assertEquals(0., v11.computeCumulativeProbabilityValue(), 0.0000001);
}
/**
* Test of setTestVector method, of class ChiSquaredSimilarity.
*/
@Test
public void testSetters()
{
assertEquals(4.55, v13.compute(), 0.0000001);
v13.setCategorizedVector(vector3);
assertEquals(0, v13.compute(), 0.0000001);
v13.setTestVector(vector1);
double temp = v13.compute();
assertEquals(4.55, v13.compute(), 0.0000001);
}
/**
* Test of getCategorizedVector method, of class ChiSquaredSimilarity.
*/
@Test
public void testGetters()
{
assertTrue(v12.getCategorizedVector().equals(vector1, 0.0001));
assertTrue(v12.getTestVector().equals(vector2, 0.0001));
}
}