/*
* File: DefaultPairTest.java
* Authors: Justin Basilico
* Company: Sandia National Laboratories
* Project: Cognitive Foundry
*
* Copyright February 22, 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.util;
import gov.sandia.cognition.annotation.CodeReview;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import junit.framework.TestCase;
/**
* This class implements JUnit tests for the following classes:
*
* DefaultPair
*
* @author Justin Basilico
* @since 1.0
*/
@CodeReview(
reviewer="Kevin R. Dixon",
date="2006-07-18",
changesNeeded=false,
comments="I'm not crazy about the monolithic tests... but it works."
)
public class DefaultPairTest
extends TestCase
{
public DefaultPairTest(
String testName)
{
super(testName);
}
public void testCreation()
{
Object o1 = new Object();
Object o2 = new Object();
DefaultPair<Object, Object> pair = null;
pair = new DefaultPair<Object, Object>();
pair = new DefaultPair<Object, Object>(o1, o1);
pair = new DefaultPair<Object, Object>(o1, o2);
pair = new DefaultPair<Object, Object>(null, null);
DefaultPair<Object,Object> p2 = new DefaultPair<Object, Object>( pair );
assertNotSame( pair, p2 );
assertSame( pair.getFirst(), p2.getFirst() );
assertSame( pair.getSecond(), p2.getSecond() );
}
public void testPair()
{
Object o1 = new Object();
Object o2 = new Object();
Object o3 = new Object();
Object o4 = new Object();
DefaultPair<Object, Object> pair = new DefaultPair<Object, Object>(o1, o2);
assertSame(o1, pair.getFirst());
assertSame(o2, pair.getSecond());
pair.setFirst(o3);
assertSame(o3, pair.getFirst());
pair.setSecond(o4);
assertSame(o4, pair.getSecond());
pair.setFirst(null);
assertNull(pair.getFirst());
pair.setSecond(null);
assertNull(pair.getSecond());
pair = new DefaultPair<Object, Object>();
assertNull(pair.getFirst());
assertNull(pair.getSecond());
pair = new DefaultPair<Object, Object>(null, null);
assertNull(pair.getFirst());
assertNull(pair.getSecond());
}
public void testEquals()
{
DefaultPair<String, Character> empty = DefaultPair.create();
//new DefaultPair<String, Character>();
DefaultPair<String, Character> ab = DefaultPair.create("a", 'b');
DefaultPair<String, Character> ba = DefaultPair.create("b", 'a');
assertTrue(empty.equals(empty));
assertFalse(empty.equals(ab));
assertFalse(empty.equals(ba));
assertFalse(empty.equals(null));
assertFalse(empty.equals(new Object()));
assertTrue(ab.equals(ab));
assertTrue(ab.equals(DefaultPair.create("a", 'b')));
assertFalse(ab.equals(empty));
assertFalse(ab.equals(ba));
assertFalse(ab.equals(null));
assertFalse(ab.equals(new Object()));
assertTrue(ba.equals(ba));
assertTrue(ba.equals(DefaultPair.create("b", 'a')));
assertFalse(ba.equals(empty));
assertFalse(ba.equals(ab));
assertFalse(ba.equals(null));
assertFalse(ba.equals(new Object()));
}
public void testHashCode()
{
DefaultPair<Object, Object> pair = new DefaultPair<Object, Object>();
assertEquals(pair.hashCode(), new DefaultPair<Object, Object>().hashCode());
pair.setFirst("a");
pair.setSecond("b");
assertEquals(pair.hashCode(), DefaultPair.create("a", "b").hashCode());
}
public void testMergeCollections()
{
System.out.println( "mergeCollections" );
List<Integer> firsts = Arrays.asList( 1, 2, 3 );
List<Double> seconds = Arrays.asList( 1.0, 2.0, 3.0 );
ArrayList<DefaultPair<Integer,Double>> combined =
DefaultPair.mergeCollections(firsts, seconds);
assertEquals( 3, combined.size() );
for( int i = 0; i < combined.size(); i++ )
{
assertSame( firsts.get(i), combined.get(i).getFirst() );
assertSame( seconds.get(i), combined.get(i).getSecond() );
}
List<Boolean> barf = Arrays.asList( false );
try
{
DefaultPair.mergeCollections(firsts, barf);
fail( "Lists must be same size!" );
}
catch (Exception e)
{
System.out.println( "Good: " + e );
}
}
public void testCreate()
{
System.out.println( "Create" );
Double first = 1.0;
Integer second = 2;
DefaultPair<Double,Integer> pair = DefaultPair.create(first, second);
assertSame( first, pair.getFirst() );
assertSame( second, pair.getSecond() );
pair = DefaultPair.create();
assertNull(pair.getFirst());
assertNull(pair.getSecond());
}
}