/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.tuple;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test DoublesPair.
*/
@Test(groups = TestGroup.UNIT)
public class DoublesPairTest {
public void test_DoublesPair_of() {
DoublesPair test = DoublesPair.of(1.2d, 2.5d);
assertEquals(Double.valueOf(1.2d), test.getFirst());
assertEquals(Double.valueOf(2.5d), test.getSecond());
assertEquals(1.2d, test.getFirstDouble(), 0.00001d);
assertEquals(2.5d, test.getSecondDouble(), 0.00001d);
assertEquals(Double.valueOf(1.2d), test.getKey());
assertEquals(Double.valueOf(2.5d), test.getValue());
assertEquals(1.2d, test.getDoubleKey(), 0.00001d);
assertEquals(2.5d, test.getDoubleValue(), 0.00001d);
assertEquals("[1.2, 2.5]", test.toString());
}
public void test_DoublesPair_parse1() {
DoublesPair test = DoublesPair.parse("[1.2, 2.5]");
assertEquals(Double.valueOf(1.2d), test.getFirst());
assertEquals(Double.valueOf(2.5d), test.getSecond());
}
public void test_DoublesPair_parse2() {
DoublesPair test = DoublesPair.parse("[1.2,2.5]");
assertEquals(Double.valueOf(1.2d), test.getFirst());
assertEquals(Double.valueOf(2.5d), test.getSecond());
}
//-------------------------------------------------------------------------
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testSetValue() {
DoublesPair pair = DoublesPair.of(2.1d, -0.3d);
pair.setValue(Double.valueOf(1.2d));
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testSetValue_null() {
DoublesPair pair = DoublesPair.of(2.1d, -0.3d);
pair.setValue(null);
}
@Test(expectedExceptions = UnsupportedOperationException.class)
public void testSetValue_primitives() {
DoublesPair pair = DoublesPair.of(2.1d, -0.3d);
pair.setValue(1.2d);
}
//-------------------------------------------------------------------------
public void compareTo_DoublesPair() {
DoublesPair p12 = DoublesPair.of(1d, 2d);
DoublesPair p13 = DoublesPair.of(1d, 3d);
DoublesPair p21 = DoublesPair.of(2d, 1d);
assertTrue(p12.compareTo(p12) == 0);
assertTrue(p12.compareTo(p13) < 0);
assertTrue(p12.compareTo(p21) < 0);
assertTrue(p13.compareTo(p12) > 0);
assertTrue(p13.compareTo(p13) == 0);
assertTrue(p13.compareTo(p21) < 0);
assertTrue(p21.compareTo(p12) > 0);
assertTrue(p21.compareTo(p13) > 0);
assertTrue(p21.compareTo(p21) == 0);
}
public void compareTo_DoublesPairAsPair() {
Pair<Double, Double> p12 = DoublesPair.of(1d, 2d);
Pair<Double, Double> p13 = DoublesPair.of(1d, 3d);
Pair<Double, Double> p21 = DoublesPair.of(2d, 1d);
assertTrue(p12.compareTo(p12) == 0);
assertTrue(p12.compareTo(p13) < 0);
assertTrue(p12.compareTo(p21) < 0);
assertTrue(p13.compareTo(p12) > 0);
assertTrue(p13.compareTo(p13) == 0);
assertTrue(p13.compareTo(p21) < 0);
assertTrue(p21.compareTo(p12) > 0);
assertTrue(p21.compareTo(p13) > 0);
assertTrue(p21.compareTo(p21) == 0);
}
//-------------------------------------------------------------------------
public void testEquals() {
DoublesPair a = DoublesPair.of(1d, 2.0d);
DoublesPair b = DoublesPair.of(1d, 3.0d);
DoublesPair c = DoublesPair.of(2d, 2.0d);
DoublesPair d = DoublesPair.of(2d, 3.0d);
assertEquals(true, a.equals(a));
assertEquals(false, a.equals(b));
assertEquals(false, a.equals(c));
assertEquals(false, a.equals(d));
assertEquals(false, b.equals(a));
assertEquals(true, b.equals(b));
assertEquals(false, b.equals(c));
assertEquals(false, b.equals(d));
assertEquals(false, c.equals(a));
assertEquals(false, c.equals(b));
assertEquals(true, c.equals(c));
assertEquals(false, c.equals(d));
assertEquals(false, d.equals(a));
assertEquals(false, d.equals(b));
assertEquals(false, d.equals(c));
assertEquals(true, d.equals(d));
}
public void testEquals_toObjectVersion() {
DoublesPair a = DoublesPair.of(1.1d, 1.7d);
Pair<Double, Double> b = ObjectsPair.of(Double.valueOf(1.1d), Double.valueOf(1.7d));
assertEquals(true, a.equals(b));
assertEquals(true, b.equals(a));
}
public void testEquals_toObjectVersion_null() {
DoublesPair b = DoublesPair.of(1.1d, 1.7d);
Pair<Double, Double> a = ObjectsPair.of(null, Double.valueOf(1.9d));
assertEquals(true, a.equals(a));
assertEquals(false, a.equals(b));
assertEquals(false, b.equals(a));
assertEquals(true, b.equals(b));
}
public void testHashCode() {
DoublesPair a = DoublesPair.of(1.1d, 1.7d);
Pair<Double, Double> b = ObjectsPair.of(Double.valueOf(1.1d), Double.valueOf(1.7d));
assertEquals(a.hashCode(), b.hashCode());
}
public void testHashCode_value() {
DoublesPair a = DoublesPair.of(1.1d, 2.0);
assertEquals(a.hashCode(), a.hashCode());
assertEquals(Double.valueOf(1.1d).hashCode() ^ Double.valueOf(2.0).hashCode(), a.hashCode());
// can't test for different hash codes as they might not be different
}
}