/* * File: RingAccumulatorTest.java * Authors: Kevin R. Dixon * Company: Sandia National Laboratories * Project: Cognitive Framework Lite * * Copyright July 19, 2006, 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.math; import gov.sandia.cognition.math.matrix.VectorFactory; import gov.sandia.cognition.math.matrix.Matrix; import gov.sandia.cognition.math.matrix.MatrixFactory; import gov.sandia.cognition.math.matrix.Vector; import java.util.Arrays; import java.util.Collection; import java.util.Random; import junit.framework.*; /** * Unit tests for RingAccumulatorTest * * @author Kevin R. Dixon * @since 1.0 */ public class RingAccumulatorTest extends TestCase { private Random random = new Random(); public RingAccumulatorTest(String testName) { super(testName); } protected void setUp() throws Exception { } protected void tearDown() throws Exception { } public static Test suite() { TestSuite suite = new TestSuite(RingAccumulatorTest.class); return suite; } /** * Test of clear method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testClear() { System.out.println("clear"); RingAccumulator<Matrix> instance = new RingAccumulator<Matrix>(); instance.accumulate( MatrixFactory.getDefault().createUniformRandom( 10, 5, -10, 10, random ) ); assertEquals( instance.getCount(), 1 ); instance.clear(); assertEquals( instance.getCount(), 0 ); } /** * Test of accumulate method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testAccumulate() { System.out.println("accumulate"); RingAccumulator<Vector> instance = new RingAccumulator<Vector>(); Vector vector = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); instance.accumulate( vector ); assertEquals( instance.getCount(), 1 ); assertEquals( instance.getSum(), vector ); assertEquals( instance.getMean(), vector ); Vector vector2 = VectorFactory.getDefault().createUniformRandom( vector.getDimensionality(), -1, 1, random ); instance.accumulate( vector2 ); Vector sum = instance.getSum(); Collection<Vector> c = Arrays.asList( vector, vector2 ); RingAccumulator<Vector> i2 = new RingAccumulator<Vector>( c ); assertEquals( sum, i2.getSum() ); } /** * Test of scaleSum method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testScaleSum() { System.out.println("scaleSum"); RingAccumulator<Vector> instance = new RingAccumulator<Vector>(); assertNull( instance.scaleSum( Math.random() ) ); double scaleFactor = Math.random(); Vector vector = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); instance.accumulate( vector ); assertEquals( instance.getSum(), vector ); assertEquals( instance.scaleSum( scaleFactor ), vector.scale( scaleFactor ) ); } /** * Test of getMean method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testGetMean() { System.out.println("getMean"); RingAccumulator<Vector> instance = new RingAccumulator<Vector>(); assertNull( instance.getMean() ); Vector vector1 = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); Vector vector2 = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); instance.accumulate( vector1 ); assertEquals( instance.getMean(), vector1 ); instance.accumulate( vector2 ); assertEquals( instance.getMean(), vector1.plus( vector2 ).scale( 0.5 ) ); } /** * Test of getSum method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testGetSum() { System.out.println("getSum"); RingAccumulator<Vector> instance = new RingAccumulator<Vector>(); assertNull( instance.getSum() ); Vector vector1 = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); Vector vector2 = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); instance.accumulate( vector1 ); assertEquals( instance.getSum(), vector1 ); instance.accumulate( vector2 ); assertEquals( instance.getSum(), vector1.plus( vector2 ) ); } /** * Test of getCount method, of class gov.sandia.isrc.math.RingAccumulator. */ public void testGetCount() { System.out.println("getCount"); RingAccumulator<Vector> instance = new RingAccumulator<Vector>(); Vector vector1 = VectorFactory.getDefault().createUniformRandom( 10, -10, 10, random ); int N = (int) (Math.random() * 1000); for( int i = 0; i < N; i++ ) { assertEquals( instance.getCount(), i ); instance.accumulate( vector1 ); } } }