/** * 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.assertNotNull; import static org.testng.AssertJUnit.assertTrue; import java.util.List; import org.joda.beans.ImmutableBean; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; /** * Test ObjectsPair. */ @Test(groups = TestGroup.UNIT) public class ObjectsPairTest { public void testOf_Object_Object() { ObjectsPair<String, String> test = ObjectsPair.of("A", "B"); assertEquals(test.getFirst(), "A"); assertEquals(test.getSecond(), "B"); } public void testObjectsPair_Object_null() { ObjectsPair<String, String> test = ObjectsPair.of("A", null); assertEquals(test.getFirst(), "A"); assertEquals(test.getSecond(), null); } public void testObjectsPair_null_Object() { ObjectsPair<String, String> test = ObjectsPair.of(null, "B"); assertEquals(test.getFirst(), null); assertEquals(test.getSecond(), "B"); } public void testObjectsPair_null_null_null() { ObjectsPair<String, String> test = ObjectsPair.of(null, null); assertEquals(test.getFirst(), null); assertEquals(test.getSecond(), null); } //------------------------------------------------------------------------- public void compareTo() { ObjectsPair<String, String> ab = ObjectsPair.of("A", "B"); ObjectsPair<String, String> ad = ObjectsPair.of("A", "D"); ObjectsPair<String, String> ba = ObjectsPair.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); } public void compareTo_null() { ObjectsPair<String, String> nn = ObjectsPair.of(null, null); ObjectsPair<String, String> na = ObjectsPair.of(null, "A"); ObjectsPair<String, String> an = ObjectsPair.of("A", null); ObjectsPair<String, String> aa = ObjectsPair.of("A", "A"); assertTrue(nn.compareTo(nn) == 0); assertTrue(nn.compareTo(na) < 0); assertTrue(nn.compareTo(an) < 0); assertTrue(nn.compareTo(aa) < 0); assertTrue(na.compareTo(nn) > 0); assertTrue(na.compareTo(na) == 0); assertTrue(na.compareTo(an) < 0); assertTrue(na.compareTo(aa) < 0); assertTrue(an.compareTo(nn) > 0); assertTrue(an.compareTo(na) > 0); assertTrue(an.compareTo(an) == 0); assertTrue(an.compareTo(aa) < 0); assertTrue(aa.compareTo(nn) > 0); assertTrue(aa.compareTo(na) > 0); assertTrue(aa.compareTo(an) > 0); assertTrue(aa.compareTo(aa) == 0); } public void testEquals() { ObjectsPair<Integer, String> a = ObjectsPair.of(1, "Hello"); ObjectsPair<Integer, String> b = ObjectsPair.of(1, "Goodbye"); ObjectsPair<Integer, String> c = ObjectsPair.of(2, "Hello"); ObjectsPair<Integer, String> d = ObjectsPair.of(2, "Goodbye"); assertEquals(a.equals(a), true); assertEquals(a.equals(b), false); assertEquals(a.equals(c), false); assertEquals(a.equals(d), false); 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); assertEquals(a.equals("RUBBISH"), false); } public void testEquals_null() { ObjectsPair<Integer, String> a = ObjectsPair.of(Integer.valueOf(1), "Hello"); ObjectsPair<Integer, String> b = ObjectsPair.of(null, "Hello"); ObjectsPair<Integer, String> c = ObjectsPair.of(Integer.valueOf(1), null); ObjectsPair<Integer, String> d = ObjectsPair.of(null, null); assertEquals(a.equals(a), true); assertEquals(a.equals(b), false); assertEquals(a.equals(c), false); assertEquals(a.equals(d), false); 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 testHashCode() { ObjectsPair<Integer, String> a = ObjectsPair.of(Integer.valueOf(1), "Hello"); ObjectsPair<Integer, String> b = ObjectsPair.of(null, "Hello"); ObjectsPair<Integer, String> c = ObjectsPair.of(Integer.valueOf(1), null); ObjectsPair<Integer, String> d = ObjectsPair.of(null, null); assertEquals(a.hashCode(), a.hashCode()); assertEquals(b.hashCode(), b.hashCode()); assertEquals(c.hashCode(), c.hashCode()); assertEquals(d.hashCode(), d.hashCode()); // can't test for different hash codes as they might not be different } public void toList() { ObjectsPair<String, String> a = ObjectsPair.of("Jay-Z", "Black Album"); List<String> asList = a.toList(); assertNotNull(asList); assertEquals(2, asList.size()); assertEquals("Jay-Z", asList.get(0)); assertEquals("Black Album", asList.get(1)); } public void test_toString() { ObjectsPair<String, String> test = ObjectsPair.of("A", "B"); assertEquals("[A, B]", test.toString()); } public void bean() { ObjectsPair<String, String> triple = ObjectsPair.of("Jay-Z", "Black Album"); assertTrue(triple instanceof ImmutableBean); assertNotNull(triple.metaBean()); assertNotNull(triple.metaBean().first()); assertNotNull(triple.metaBean().second()); assertEquals("Jay-Z", triple.metaBean().first().get(triple)); assertEquals("Black Album", triple.metaBean().second().get(triple)); assertEquals("Jay-Z", triple.property("first").get()); assertEquals("Black Album", triple.property("second").get()); } }