/*
* File: ScalarFunctionToBinaryCategorizerAdapterTest.java
* Authors: Kevin R. Dixon
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright Jul 1, 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.learning.function.categorization;
import gov.sandia.cognition.evaluator.Evaluator;
import gov.sandia.cognition.util.AbstractCloneableSerializable;
/**
* Unit tests for ScalarFunctionToBinaryCategorizerAdapterTest.
*
* @author krdixon
*/
public class ScalarFunctionToBinaryCategorizerAdapterTest
extends ThresholdBinaryCategorizerTestHarness<String>
{
/**
* Tests for class ScalarFunctionToBinaryCategorizerAdapterTest.
* @param testName Name of the test.
*/
public ScalarFunctionToBinaryCategorizerAdapterTest(
String testName)
{
super(testName);
}
/**
* Maps string length onto a double
*/
public static class StringLengthEvaluator
extends AbstractCloneableSerializable
implements Evaluator<String,Double>
{
public Double evaluate(
String input)
{
return new Double( input.length() );
}
}
@Override
public ScalarFunctionToBinaryCategorizerAdapter<String> createInstance()
{
return new ScalarFunctionToBinaryCategorizerAdapter<String>(
new StringLengthEvaluator(), RANDOM.nextGaussian() );
}
@Override
public String createRandomInput()
{
String retval = "a";
while( RANDOM.nextDouble() > 0.1 )
{
retval += String.valueOf(RANDOM.nextInt(255));
}
return retval;
}
/**
* Tests the constructors of class ScalarFunctionToBinaryCategorizerAdapterTest.
*/
public void testConstructors()
{
System.out.println( "Constructors" );
ScalarFunctionToBinaryCategorizerAdapter<String> f = new ScalarFunctionToBinaryCategorizerAdapter<String>();
assertNotNull( f );
assertNull( f.getEvaluator() );
assertEquals( ScalarFunctionToBinaryCategorizerAdapter.DEFAULT_THRESHOLD, f.getThreshold() );
StringLengthEvaluator e = new StringLengthEvaluator();
f = new ScalarFunctionToBinaryCategorizerAdapter<String>( e );
assertNotNull( f );
assertSame( e, f.getEvaluator() );
assertEquals( ScalarFunctionToBinaryCategorizerAdapter.DEFAULT_THRESHOLD, f.getThreshold() );
double t = RANDOM.nextGaussian();
f = new ScalarFunctionToBinaryCategorizerAdapter<String>( e, t );
assertNotNull( f );
assertSame( e, f.getEvaluator() );
assertEquals( t, f.getThreshold() );
}
/**
* Clone local
*/
public void testCloneLocal()
{
System.out.println( "Clone local" );
ScalarFunctionToBinaryCategorizerAdapter<String> instance = this.createInstance();
ScalarFunctionToBinaryCategorizerAdapter<String> clone = instance.clone();
assertNotNull( clone );
assertNotSame( instance, clone );
assertNotSame( instance.getEvaluator(), clone.getEvaluator() );
}
/**
* Test of evaluateWithoutThreshold method, of class ScalarFunctionToBinaryCategorizerAdapter.
*/
public void testEvaluateWithoutThreshold()
{
System.out.println("evaluateWithoutThreshold");
ScalarFunctionToBinaryCategorizerAdapter<String> instance = this.createInstance();
assertEquals( 5.0, instance.evaluateWithoutThreshold("Kevin") );
}
/**
* Test of getEvaluator method, of class ScalarFunctionToBinaryCategorizerAdapter.
*/
public void testGetEvaluator()
{
System.out.println("getEvaluator");
ScalarFunctionToBinaryCategorizerAdapter<?> instance = this.createInstance();
assertNotNull( instance.getEvaluator() );
}
/**
* Test of setEvaluator method, of class ScalarFunctionToBinaryCategorizerAdapter.
*/
public void testSetEvaluator()
{
System.out.println("setEvaluator");
ScalarFunctionToBinaryCategorizerAdapter<String> instance = this.createInstance();
Evaluator<? super String,Double> f = instance.getEvaluator();
assertNotNull( f );
instance.setEvaluator(null);
assertNull( instance.getEvaluator() );
instance.setEvaluator(f);
assertSame( f, instance.getEvaluator() );
}
}