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