/*
* File: EvaluatorBasedCognitiveModuleFactoryTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright June 26, 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;
import gov.sandia.cognition.framework.learning.converter.CogxelVectorConverter;
import gov.sandia.cognition.framework.lite.CognitiveModelLiteFactory;
import gov.sandia.cognition.framework.CognitiveModel;
import gov.sandia.cognition.framework.DefaultSemanticLabel;
import gov.sandia.cognition.framework.SemanticLabel;
import gov.sandia.cognition.learning.function.vector.LinearVectorFunction;
import gov.sandia.cognition.math.matrix.MatrixFactory;
import gov.sandia.cognition.math.matrix.Vector;
import gov.sandia.cognition.math.signals.LinearDynamicalSystem;
import java.util.Random;
import junit.framework.TestCase;
/**
* This class implements JUnit tests for the following classes:
*
* @author Justin Basilico
* @since 2.0
*/
public class EvaluatorBasedCognitiveModuleFactoryTest
extends TestCase
{
/** The random number generator for the tests. */
protected Random random = new Random(1);
public EvaluatorBasedCognitiveModuleFactoryTest(
String testName)
{
super(testName);
}
public EvaluatorBasedCognitiveModuleSettings<Vector, Vector> createSettings()
{
DefaultSemanticLabel in1 = new DefaultSemanticLabel("in1");
DefaultSemanticLabel in2 = new DefaultSemanticLabel("in2");
DefaultSemanticLabel out1 = new DefaultSemanticLabel("out1");
LinearVectorFunction evaluator =
new LinearVectorFunction(Math.random());
CogxelVectorConverter inputConverter = new CogxelVectorConverter(
new SemanticLabel[]{in1, in2});
CogxelVectorConverter outputConverter = new CogxelVectorConverter(
new SemanticLabel[]{out1});
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
new EvaluatorBasedCognitiveModuleSettings<Vector, Vector>(
evaluator, inputConverter, outputConverter);
return settings;
}
public void testConstructors()
{
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> instance =
new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>();
assertNotNull(instance.getSettings());
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
this.createSettings();
instance = new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>(
settings, "Module Name");
assertSame(instance.getSettings(), settings);
instance = new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>(
instance);
assertNotNull(instance.getSettings());
assertNotSame(instance.getSettings(), settings);
}
/**
* Test of clone method, of class gov.sandia.cognition.framework.learning.EvaluatorBasedCognitiveModuleFactory.
*/
public void testClone()
{
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
this.createSettings();
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> instance =
new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>(
settings, "Module Name");
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> clone =
instance.clone();
assertNotNull(clone);
assertNotSame(instance, clone);
assertNotNull(clone.getSettings());
assertNotSame(clone.getSettings(), instance.getSettings());
}
/**
* Test of createModule method, of class gov.sandia.cognition.framework.learning.EvaluatorBasedCognitiveModuleFactory.
*/
public void testCreateModule()
{
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
this.createSettings();
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> instance =
new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>(
settings, "Module Name");
CognitiveModelLiteFactory modelFactory = new CognitiveModelLiteFactory();
modelFactory.addModuleFactory(instance);
LinearVectorFunction linearEvaluator =
new LinearVectorFunction(Math.random());
CognitiveModel linearModel = modelFactory.createModel();
EvaluatorBasedCognitiveModule<?, ?> linearModule =
(EvaluatorBasedCognitiveModule) linearModel.getModules().get(0);
assertFalse(linearModule instanceof StatefulEvaluatorBasedCognitiveModule);
assertSame(linearModule.getEvaluator(), settings.getEvaluator());
assertEquals(settings.getInputConverter(), linearModule.getInputConverter());
assertEquals(settings.getOutputConverter(), linearModule.getOutputConverter());
// Make sure that a StatefulEvaluator turns into the module that
// holds state.
LinearDynamicalSystem statefulEvaluator = new LinearDynamicalSystem(
MatrixFactory.getDefault().createUniformRandom(2, 2, 0.0, 1.0, random),
MatrixFactory.getDefault().createUniformRandom(2, 2, 0.0, 1.0, random));
settings.setEvaluator(statefulEvaluator);
CognitiveModel statefulModel = modelFactory.createModel();
StatefulEvaluatorBasedCognitiveModule<?,?> statefulModule =
(StatefulEvaluatorBasedCognitiveModule) statefulModel.getModules().get(0);
assertTrue(statefulModule instanceof StatefulEvaluatorBasedCognitiveModule);
assertSame(statefulModule.getEvaluator(), settings.getEvaluator());
assertEquals(settings.getInputConverter(), statefulModule.getInputConverter());
assertEquals(settings.getOutputConverter(), statefulModule.getOutputConverter());
}
/**
* Test of getSettings method, of class gov.sandia.cognition.framework.learning.EvaluatorBasedCognitiveModuleFactory.
*/
public void testGetSettings()
{
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> instance =
new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>();
assertNotNull(instance.getSettings());
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
this.createSettings();
instance.setSettings(settings);
assertSame(instance.getSettings(), settings);
}
/**
* Test of setSettings method, of class gov.sandia.cognition.framework.learning.EvaluatorBasedCognitiveModuleFactory.
*/
public void testSetSettings()
{
EvaluatorBasedCognitiveModuleFactory<Vector, Vector> instance =
new EvaluatorBasedCognitiveModuleFactory<Vector, Vector>();
assertNotNull(instance.getSettings());
EvaluatorBasedCognitiveModuleSettings<Vector, Vector> settings =
this.createSettings();
instance.setSettings(settings);
assertSame(instance.getSettings(), settings);
instance.setSettings(null);
assertNull(instance.getSettings());
}
}