/**
* 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 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 PairTest {
//-------------------------------------------------------------------------
@DataProvider(name = "factory")
Object[][] data_factory() {
return new Object[][] {
{"A", "B"},
{"A", 200.2d},
};
}
@Test(dataProvider = "factory")
public void test_of_getters(Object first, Object second) {
Pair<Object, Object> test = Pair.of(first, second);
assertEquals(test.getFirst(), first);
assertEquals(test.getSecond(), second);
}
@Test(dataProvider = "factory")
public void test_sizeElements(Object first, Object second) {
Pair<Object, Object> test = Pair.of(first, second);
assertEquals(test.size(), 2);
assertEquals(test.elements(), ImmutableList.of(first, second));
}
@Test(dataProvider = "factory")
public void test_toString(Object first, Object second) {
Pair<Object, Object> test = Pair.of(first, second);
String str = "[" + first + ", " + second + "]";
assertEquals(test.toString(), str);
}
@DataProvider(name = "factoryNull")
Object[][] data_factoryNull() {
return new Object[][] {
{null, null},
{null, "B"},
{"A", null},
};
}
@Test(dataProvider = "factoryNull", expectedExceptions = IllegalArgumentException.class)
public void test_of_null(Object first, Object second) {
Pair.of(first, second);
}
//-------------------------------------------------------------------------
public void test_compareTo() {
Pair<String, String> ab = Pair.of("A", "B");
Pair<String, String> ad = Pair.of("A", "D");
Pair<String, String> ba = Pair.of("B", "A");
assertTrue(ab.compareTo(ab) == 0);
assertTrue(ab.compareTo(ad) < 0);
assertTrue(ab.compareTo(ba) < 0);
assertTrue(ad.compareTo(ab) > 0);
assertTrue(ad.compareTo(ad) == 0);
assertTrue(ad.compareTo(ba) < 0);
assertTrue(ba.compareTo(ab) > 0);
assertTrue(ba.compareTo(ad) > 0);
assertTrue(ba.compareTo(ba) == 0);
}
@Test(expectedExceptions = ClassCastException.class)
public void test_compareTo_notComparable() {
Runnable notComparable = () -> {};
Pair<Runnable, String> test1 = Pair.of(notComparable, "A");
Pair<Runnable, String> test2 = Pair.of(notComparable, "B");
test1.compareTo(test2);
}
//-------------------------------------------------------------------------
public void test_equals() {
Pair<Integer, String> a = Pair.of(1, "Hello");
Pair<Integer, String> a2 = Pair.of(1, "Hello");
Pair<Integer, String> b = Pair.of(1, "Goodbye");
Pair<Integer, String> c = Pair.of(2, "Hello");
Pair<Integer, String> d = Pair.of(2, "Goodbye");
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() {
Pair<Integer, String> a = Pair.of(1, "Hello");
assertEquals(a.equals(null), false);
assertEquals(a.equals(""), false);
}
public void test_hashCode() {
Pair<Integer, String> a = Pair.of(1, "Hello");
assertEquals(a.hashCode(), a.hashCode());
}
public void test_toString() {
Pair<String, String> test = Pair.of("A", "B");
assertEquals("[A, B]", test.toString());
}
public void coverage() {
Pair<String, String> test = Pair.of("A", "B");
TestHelper.coverImmutableBean(test);
}
}