/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.strata.collect.tuple;
import static com.opengamma.strata.collect.TestHelper.assertJodaConvert;
import static com.opengamma.strata.collect.TestHelper.assertSerialization;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertTrue;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
import com.opengamma.strata.collect.TestHelper;
/**
* Test.
*/
@Test
public class DoublesPairTest {
private static final double TOLERANCE = 0.00001d;
//-------------------------------------------------------------------------
@DataProvider(name = "factory")
Object[][] data_factory() {
return new Object[][] {
{1.2d, 2.5d},
{-100.1d, 200.2d},
{-1.2d, -2.5d},
{0d, 0d},
};
}
@Test(dataProvider = "factory")
public void test_of_getters(double first, double second) {
DoublesPair test = DoublesPair.of(first, second);
assertEquals(test.getFirst(), first, TOLERANCE);
assertEquals(test.getSecond(), second, TOLERANCE);
}
@Test(dataProvider = "factory")
public void test_ofPair(double first, double second) {
Pair<Double, Double> pair = Pair.of(first, second);
DoublesPair test = DoublesPair.ofPair(pair);
assertEquals(test.getFirst(), first, TOLERANCE);
assertEquals(test.getSecond(), second, TOLERANCE);
}
@Test(dataProvider = "factory")
public void test_sizeElements(double first, double second) {
DoublesPair test = DoublesPair.of(first, second);
assertEquals(test.size(), 2);
assertEquals(test.elements(), ImmutableList.of(first, second));
}
@Test(dataProvider = "factory")
public void test_toString(double first, double second) {
DoublesPair test = DoublesPair.of(first, second);
String str = "[" + first + ", " + second + "]";
assertEquals(test.toString(), str);
assertEquals(DoublesPair.parse(str), test);
}
@Test(dataProvider = "factory")
public void test_toPair(double first, double second) {
DoublesPair test = DoublesPair.of(first, second);
assertEquals(test.toPair(), Pair.of(first, second));
}
//-------------------------------------------------------------------------
@DataProvider(name = "parseGood")
Object[][] data_parseGood() {
return new Object[][] {
{"[1.2, 2.5]", 1.2d, 2.5d},
{"[1.2,2.5]", 1.2d, 2.5d},
{"[ 1.2, 2.5 ]", 1.2d, 2.5d},
{"[-1.2, -2.5]", -1.2d, -2.5d},
{"[0,4]", 0d, 4d},
{"[1d,201d]", 1d, 201d},
};
}
@Test(dataProvider = "parseGood")
public void test_parse_good(String text, double first, double second) {
DoublesPair test = DoublesPair.parse(text);
assertEquals(test.getFirst(), first, TOLERANCE);
assertEquals(test.getSecond(), second, TOLERANCE);
}
@DataProvider(name = "parseBad")
Object[][] data_parseBad() {
return new Object[][] {
{null},
{""},
{"[]"},
{"[10]"},
{"[10,20"},
{"10,20]"},
{"[10 20]"},
{"[10,20,30]"},
};
}
@Test(dataProvider = "parseBad", expectedExceptions = IllegalArgumentException.class)
public void test_parse_bad(String text) {
DoublesPair.parse(text);
}
//-------------------------------------------------------------------------
public void test_compareTo() {
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 test_equals() {
DoublesPair a = DoublesPair.of(1d, 2.0d);
DoublesPair a2 = 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(a.equals(a), true);
assertEquals(a.equals(b), false);
assertEquals(a.equals(c), false);
assertEquals(a.equals(d), false);
assertEquals(a.equals(a2), true);
assertEquals(b.equals(a), false);
assertEquals(b.equals(b), true);
assertEquals(b.equals(c), false);
assertEquals(b.equals(d), false);
assertEquals(c.equals(a), false);
assertEquals(c.equals(b), false);
assertEquals(c.equals(c), true);
assertEquals(c.equals(d), false);
assertEquals(d.equals(a), false);
assertEquals(d.equals(b), false);
assertEquals(d.equals(c), false);
assertEquals(d.equals(d), true);
}
public void test_equals_bad() {
DoublesPair a = DoublesPair.of(1.1d, 1.7d);
assertEquals(a.equals(null), false);
assertEquals(a.equals(""), false);
assertEquals(a.equals(Pair.of(Double.valueOf(1.1d), Double.valueOf(1.7d))), false);
}
public void test_hashCode() {
DoublesPair a1 = DoublesPair.of(1d, 2.0d);
DoublesPair a2 = DoublesPair.of(1d, 2.0d);
assertEquals(a1.hashCode(), a2.hashCode());
}
public void coverage() {
DoublesPair test = DoublesPair.of(1d, 2.0d);
TestHelper.coverImmutableBean(test);
}
public void test_serialization() {
assertSerialization(DoublesPair.of(1d, 1.7d));
}
public void test_jodaConvert() {
assertJodaConvert(DoublesPair.class, DoublesPair.of(1d, 1.7d));
}
}