/* * File: UniqueBooleanVectorEncoderTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright June 17, 2008, 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.data.convert.vector; import gov.sandia.cognition.data.convert.number.DefaultBooleanToNumberConverter; import gov.sandia.cognition.math.matrix.mtj.Vector2; import gov.sandia.cognition.math.matrix.mtj.Vector3; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import org.junit.Test; import static org.junit.Assert.*; /** * Tests of UniqueBooleanVectorEncoder * @author Justin Basilico * @since 2.1 */ public class UniqueBooleanVectorEncoderTest { /** * Creates a new test. */ public UniqueBooleanVectorEncoderTest() { } /** * Tests the constructors. */ @Test public void testConstructors() { String[] valuesArray = { "yes", "no", "maybe" }; List<String> values = Arrays.asList(valuesArray); NumberConverterToVectorAdapter<Boolean> booleanConverter = new NumberConverterToVectorAdapter<Boolean>( new DefaultBooleanToNumberConverter()); UniqueBooleanVectorEncoder<String> instance = new UniqueBooleanVectorEncoder<String>(values, booleanConverter); assertSame(values, instance.getValues()); assertSame(booleanConverter, instance.getBooleanConverter()); } /** * Test of evaluate method, of class UniqueBooleanVectorEncoder. */ @Test public void testEvaluate() { LinkedList<String> values = new LinkedList<String>(); values.add("a"); values.add("b"); UniqueBooleanVectorEncoder<String> instance = new UniqueBooleanVectorEncoder<String>(values, new NumberConverterToVectorAdapter<Boolean>( new DefaultBooleanToNumberConverter())); assertEquals(new Vector2(+1.0, -1.0), instance.evaluate("a")); assertEquals(new Vector2(-1.0, +1.0), instance.evaluate("b")); assertEquals(new Vector2(-1.0, -1.0), instance.evaluate("c")); assertEquals(new Vector2(-1.0, -1.0), instance.evaluate("ab")); assertEquals(new Vector2(0.0, 0.0), instance.evaluate(null)); values.add("a"); assertEquals(new Vector3(+1.0, -1.0, +1.0), instance.evaluate("a")); assertEquals(new Vector3(-1.0, +1.0, -1.0), instance.evaluate("b")); assertEquals(new Vector3(-1.0, -1.0, -1.0), instance.evaluate("c")); assertEquals(new Vector3(-1.0, -1.0, -1.0), instance.evaluate("ab")); assertEquals(new Vector3(0.0, 0.0, 0.0), instance.evaluate(null)); } /** * Test of getOutputDimensionality method, of class UniqueBooleanVectorEncoder. */ @Test public void testGetOutputDimensionality() { LinkedList<String> values = new LinkedList<String>(); UniqueBooleanVectorEncoder<String> instance = new UniqueBooleanVectorEncoder<String>(values, new NumberConverterToVectorAdapter<Boolean>( new DefaultBooleanToNumberConverter())); assertEquals(0, instance.getOutputDimensionality()); values.add("a"); assertEquals(1, instance.getOutputDimensionality()); values.add("b"); assertEquals(2, instance.getOutputDimensionality()); } /** * Test of getValues method, of class UniqueBooleanVectorEncoder. */ @Test public void testGetValues() { String[] valuesArray = { "yes", "no", "maybe" }; List<String> values = Arrays.asList(valuesArray); UniqueBooleanVectorEncoder<String> instance = new UniqueBooleanVectorEncoder<String>(values, null); assertSame(values, instance.getValues()); } /** * Test of getBooleanConverter method, of class UniqueBooleanVectorEncoder. */ @Test public void testGetBooleanConverter() { NumberConverterToVectorAdapter<Boolean> booleanConverter = new NumberConverterToVectorAdapter<Boolean>( new DefaultBooleanToNumberConverter()); UniqueBooleanVectorEncoder<String> instance = new UniqueBooleanVectorEncoder<String>(null, booleanConverter); assertSame(booleanConverter, instance.getBooleanConverter()); } }