/*
* File: CogxelVectorCollectionConverterTest.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright 2007, 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.framework.learning.converter;
import gov.sandia.cognition.framework.learning.*;
import gov.sandia.cognition.framework.DefaultSemanticIdentifierMap;
import gov.sandia.cognition.framework.DefaultSemanticLabel;
import gov.sandia.cognition.framework.SemanticIdentifier;
import gov.sandia.cognition.framework.SemanticIdentifierMap;
import gov.sandia.cognition.framework.SemanticLabel;
import gov.sandia.cognition.math.matrix.VectorFactory;
import junit.framework.*;
import gov.sandia.cognition.framework.CogxelState;
import gov.sandia.cognition.framework.DefaultCogxel;
import gov.sandia.cognition.framework.lite.CogxelStateLite;
import gov.sandia.cognition.math.matrix.Vector;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedList;
import java.util.Random;
/**
*
* @author Kevin R. Dixon
*/
public class CogxelVectorCollectionConverterTest extends TestCase
{
/** The random number generator for the tests. */
protected Random random = new Random();
public CogxelVectorCollectionConverterTest(String testName)
{
super(testName);
}
protected void setUp() throws Exception
{
}
protected void tearDown() throws Exception
{
}
public CogxelVectorCollectionConverter createInstance()
{
int N = (int) (Math.random() * 10) + 2;
ArrayList<CogxelVectorConverter> v = new ArrayList<CogxelVectorConverter>( N );
for( int n = 0; n < N; n++ )
{
v.add( CogxelVectorConverterTest.createInstance() );
}
return new CogxelVectorCollectionConverter( v );
}
/**
* Test of clone method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testClone()
{
System.out.println("clone");
CogxelVectorCollectionConverter instance = createInstance();
CogxelVectorCollectionConverter clone = instance.clone();
assertNotSame( instance, clone );
assertEquals( instance.getNumVectors(), clone.getNumVectors() );
assertSame( instance.getCogxelVectorConverters(), clone.getCogxelVectorConverters() );
}
/**
* Test of fromCogxels method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testFromCogxels()
{
System.out.println("fromCogxels");
int N = (int) (Math.random() * 10) + 10;
double r = 1.0;
Vector values = VectorFactory.getDefault().createUniformRandom( N, -r, r, random );
ArrayList<SemanticLabel> labels = new ArrayList<SemanticLabel>( N );
ArrayList<CogxelVectorConverter> c = new ArrayList<CogxelVectorConverter>( N );
SemanticIdentifierMap map = new DefaultSemanticIdentifierMap();
CogxelState cogxels = new CogxelStateLite();
for( int i = 0; i < N; i++ )
{
SemanticLabel label = new DefaultSemanticLabel( "Label" + i );
labels.add( label );
c.add( new CogxelVectorConverter( label ) );
SemanticIdentifier identifier = map.addLabel( label );
cogxels.addCogxel(new DefaultCogxel(identifier, values.getElement(i)));
}
CogxelVectorCollectionConverter instance =
new CogxelVectorCollectionConverter( c );
instance.setSemanticIdentifierMap( map );
ArrayList<Vector> vest = instance.fromCogxels(cogxels);
assertNotNull(vest);
assertEquals(N, vest.size());
for( int i = 0; i < N; i++ )
{
assertEquals( values.getElement(i), vest.get(i).getElement(0) );
}
}
/**
* Test of toCogxels method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testToCogxels()
{
System.out.println("toCogxels");
int N = (int) (Math.random() * 10) + 10;
double r = 1.0;
ArrayList<Vector> values = new ArrayList<Vector>( N );
ArrayList<SemanticLabel> labels = new ArrayList<SemanticLabel>( N );
ArrayList<CogxelVectorConverter> c = new ArrayList<CogxelVectorConverter>( N );
SemanticIdentifierMap map = new DefaultSemanticIdentifierMap();
CogxelState cogxels = new CogxelStateLite();
for( int i = 0; i < N; i++ )
{
values.add( VectorFactory.getDefault().createUniformRandom(1,-r,r, random) );
SemanticLabel label = new DefaultSemanticLabel( "Label" + i );
labels.add( label );
c.add( new CogxelVectorConverter( label ) );
SemanticIdentifier identifier = map.addLabel( label );
cogxels.addCogxel(new DefaultCogxel(identifier, values.get(i).getElement(0) + 1 ) );
}
for( int i = 0; i < N; i++ )
{
assertFalse( values.get(i).getElement(0) == cogxels.getCogxelActivation( map.findIdentifier( labels.get(i) ) ) );
}
CogxelVectorCollectionConverter instance =
new CogxelVectorCollectionConverter( c );
instance.setSemanticIdentifierMap( map );
instance.toCogxels( values, cogxels );
for( int i = 0; i < N; i++ )
{
assertEquals( values.get(i).getElement(0), cogxels.getCogxelActivation( map.findIdentifier( labels.get(i) ) ) );
}
}
/**
* Test of getSemanticIdentifierMap method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testGetSemanticIdentifierMap()
{
System.out.println("getSemanticIdentifierMap");
CogxelVectorCollectionConverter instance = this.createInstance();
assertNull( instance.getSemanticIdentifierMap() );
}
/**
* Test of setSemanticIdentifierMap method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testSetSemanticIdentifierMap()
{
System.out.println("setSemanticIdentifierMap");
CogxelVectorCollectionConverter instance = this.createInstance();
assertNull( instance.getSemanticIdentifierMap() );
DefaultSemanticIdentifierMap map = new DefaultSemanticIdentifierMap();
instance.setSemanticIdentifierMap( map );
assertSame( map, instance.getSemanticIdentifierMap() );
}
/**
* Test of getNumVectors method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testGetNumVectors()
{
System.out.println("getNumVectors");
CogxelVectorCollectionConverter instance =
new CogxelVectorCollectionConverter(
CogxelVectorConverterTest.createInstance(),
CogxelVectorConverterTest.createInstance() );
assertEquals( 2, instance.getNumVectors() );
int N = (int) (Math.random() * 10) + 2;
LinkedList<CogxelVectorConverter> v = new LinkedList<CogxelVectorConverter>();
for( int i = 0; i < N; i++ )
{
v.add( CogxelVectorConverterTest.createInstance() );
}
instance = new CogxelVectorCollectionConverter( v );
assertEquals( N, instance.getNumVectors() );
}
/**
* Test of getCogxelVectorConverters method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testGetCogxelVectorConverters()
{
System.out.println("getCogxelVectorConverters");
int N = (int) (Math.random() * 10) + 2;
LinkedList<CogxelVectorConverter> v = new LinkedList<CogxelVectorConverter>();
for( int i = 0; i < N; i++ )
{
v.add( CogxelVectorConverterTest.createInstance() );
}
CogxelVectorCollectionConverter instance = new CogxelVectorCollectionConverter( v );
Collection<CogxelVectorConverter> vest = instance.getCogxelVectorConverters();
assertSame( v, vest );
}
/**
* Test of setCogxelVectorConverters method, of class gov.sandia.cognition.framework.learning.CogxelVectorCollectionConverter.
*/
public void testSetCogxelVectorConverters()
{
System.out.println("setCogxelVectorConverters");
int N = (int) (Math.random() * 10) + 2;
LinkedList<CogxelVectorConverter> v = new LinkedList<CogxelVectorConverter>();
for( int i = 0; i < N; i++ )
{
v.add( CogxelVectorConverterTest.createInstance() );
}
CogxelVectorCollectionConverter instance = new CogxelVectorCollectionConverter( v );
Collection<CogxelVectorConverter> vest = instance.getCogxelVectorConverters();
assertSame( v, vest );
LinkedList<CogxelVectorConverter> v2 = new LinkedList<CogxelVectorConverter>();
for( int i = 0; i < N; i++ )
{
v2.add( CogxelVectorConverterTest.createInstance() );
}
instance.setCogxelVectorConverters( v2 );
assertSame( v2, instance.getCogxelVectorConverters() );
}
}