/* * File: DefaultInputOutputPairTest.java * Authors: Justin Basilico * Company: Sandia National Laboratories * Project: Cognitive Foundry * * Copyright October 5, 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.learning.data; import java.util.ArrayList; import java.util.LinkedList; import java.util.Random; import junit.framework.Test; import junit.framework.TestCase; import junit.framework.TestSuite; /** * * @author jdbasil */ public class DefaultInputOutputPairTest extends TestCase { public DefaultInputOutputPairTest(String testName) { super(testName); } public static Test suite() { TestSuite suite = new TestSuite(DefaultInputOutputPairTest.class); return suite; } public void testConstructors() { InputOutputPair<Object, Object> instance = new DefaultInputOutputPair<Object, Object>(); assertNull(instance.getInput()); assertNull(instance.getOutput()); Object input = new Object(); Object output = new Object(); instance = new DefaultInputOutputPair<Object, Object>(input, output); assertSame(input, instance.getInput()); assertSame(output, instance.getOutput()); InputOutputPair<Object, Object> p2 = new DefaultInputOutputPair<Object, Object>( instance ); assertNotSame( p2, instance ); assertSame( p2.getInput(), instance.getInput() ); assertSame( p2.getOutput(), instance.getOutput() ); } public void testCreate() { System.out.println( "Create" ); Double input = 1.0; Integer output = 2; InputOutputPair<Double, Integer> instance = DefaultInputOutputPair.create(input,output); assertSame( input, instance.getInput() ); assertSame( output, instance.getOutput() ); } /** * Test of getInput method, of class gov.sandia.isrc.learning.util.data.InputOutputPair. */ public void testGetInput() { Object input = new Object(); Object output = new Object(); InputOutputPair<Object, Object> instance = new DefaultInputOutputPair<Object, Object>(input, output); assertSame(input, instance.getInput()); } /** * Test of getOutput method, of class gov.sandia.isrc.learning.util.data.InputOutputPair. */ public void testGetOutput() { Object input = new Object(); Object output = new Object(); InputOutputPair<Object, Object> instance = new DefaultInputOutputPair<Object, Object>(input, output); assertSame(output, instance.getOutput()); } /** * Test of setInput method, of class gov.sandia.isrc.learning.util.data.InputOutputPair. */ public void testSetInput() { Object input = new Object(); Object output = new Object(); DefaultInputOutputPair<Object, Object> instance = new DefaultInputOutputPair<Object, Object>(input, output); assertSame(input, instance.getInput()); Object newInput = new Object(); instance.setInput(newInput); assertSame(newInput, instance.getInput()); instance.setInput(null); assertNull(instance.getInput()); } /** * Test of setOutput method, of class gov.sandia.isrc.learning.util.data.InputOutputPair. */ public void testSetOutput() { Object input = new Object(); Object output = new Object(); DefaultInputOutputPair<Object, Object> instance = new DefaultInputOutputPair<Object, Object>(input, output); assertSame(output, instance.getOutput()); Object newOutput = new Object(); instance.setOutput(newOutput); assertSame(newOutput, instance.getOutput()); instance.setOutput(null); assertNull(instance.getOutput()); } /** * Test of mergeCollections method, of class InputOutputPair. */ public void testMergeCollections() { System.out.println( "mergeCollections" ); int num = 100; Random random = new Random( 1 ); ArrayList<Double> inputs = new ArrayList<Double>(num); ArrayList<Integer> outputs = new ArrayList<Integer>(num); for( int n = 0; n < num; n++ ) { inputs.add( random.nextDouble() ); outputs.add( random.nextInt() ); } ArrayList<DefaultInputOutputPair<Double,Integer>> result = DefaultInputOutputPair.mergeCollections( inputs, outputs ); assertEquals( num, result.size() ); for( int n = 0; n < num; n++ ) { assertSame( result.get(n).getInput(), inputs.get(n) ); assertSame( result.get(n).getOutput(), outputs.get(n) ); } try { DefaultInputOutputPair.mergeCollections( inputs, new LinkedList<Integer>() ); fail( "Collections must be same size!" ); } catch (Exception e) { System.out.println( "Good: " + e ); } } /** * Test of labelCollection method, of class DefaultInputOutputPair. */ public void testLabelCollection() { int num = 100; Random random = new Random(211); ArrayList<Double> inputs = new ArrayList<Double>(num); for (int n = 0; n < num; n++) { inputs.add(random.nextDouble()); } Integer output = random.nextInt(); ArrayList<DefaultInputOutputPair<Double, Integer>> result = DefaultInputOutputPair.labelCollection(inputs, output); assertEquals(num, result.size()); for (int n = 0; n < num; n++) { assertSame(inputs.get(n), result.get(n).getInput()); assertSame(output, result.get(n).getOutput()); } assertTrue(DefaultInputOutputPair.labelCollection(new LinkedList<Boolean>(), null).isEmpty()); } /** * Test of toString method, of class InputOutputPair. */ public void testToString() { System.out.println( "toString" ); InputOutputPair<?,?> instance = new DefaultInputOutputPair<String,String>(); System.out.println( "Pair: " + instance ); } /** * Test of getFirst method, of class InputOutputPair. */ public void testGetFirst() { System.out.println( "getFirst" ); InputOutputPair<Double,Double> instance = new DefaultInputOutputPair<Double,Double>(1.0,2.0); assertSame( instance.getInput(), instance.getFirst() ); } /** * Test of getSecond method, of class InputOutputPair. */ public void testGetSecond() { System.out.println( "getSecond" ); InputOutputPair<Double,Double> instance = new DefaultInputOutputPair<Double,Double>(1.0,2.0); assertSame( instance.getOutput(), instance.getSecond() ); } }