/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.id; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertNull; import static org.threeten.bp.Month.DECEMBER; import static org.threeten.bp.Month.JANUARY; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import com.opengamma.util.test.TestGroup; /** * Test {@link ExternalIdWithDates}. */ @Test(groups = TestGroup.UNIT) public class ExternalIdWithDatesTest { private static final ExternalScheme SCHEME = ExternalScheme.of("Scheme"); private static final ExternalId IDENTIFIER = ExternalId.of(SCHEME, "value"); private static final LocalDate VALID_FROM = LocalDate.of(2010, JANUARY, 1); private static final LocalDate VALID_TO = LocalDate.of(2010, DECEMBER, 1); public void test_factory_ExternalId_LocalDate_LocalDate() { ExternalIdWithDates test = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); assertEquals(IDENTIFIER, test.toExternalId()); assertEquals(VALID_FROM, test.getValidFrom()); assertEquals(VALID_TO, test.getValidTo()); assertEquals("Scheme~value~S~2010-01-01~E~2010-12-01", test.toString()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_ExternalId_LocalDate_LocalDate_nullExternalId() { ExternalIdWithDates.of((ExternalId) null, VALID_FROM, VALID_TO); } public void test_factory_ExternalId_LocalDate_LocalDate_nullValidFrom() { ExternalIdWithDates test = ExternalIdWithDates.of(IDENTIFIER, (LocalDate) null, VALID_TO); assertEquals(IDENTIFIER, test.toExternalId()); assertNull(test.getValidFrom()); assertEquals(VALID_TO, test.getValidTo()); assertEquals("Scheme~value~E~2010-12-01", test.toString()); } public void test_factory_ExternalId_LocalDate_LocalDate_nullValidTo() { ExternalIdWithDates test = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, (LocalDate) null); assertEquals(IDENTIFIER, test.toExternalId()); assertNull(test.getValidTo()); assertEquals(VALID_FROM, test.getValidFrom()); assertEquals("Scheme~value~S~2010-01-01", test.toString()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_validFrom_after_validTo() { ExternalIdWithDates.of(IDENTIFIER, VALID_TO, VALID_FROM); } //------------------------------------------------------------------------- public void test_parse() { ExternalIdWithDates test = ExternalIdWithDates.parse("Scheme~value~S~2010-01-01~E~2010-12-01"); assertEquals(IDENTIFIER, test.toExternalId()); assertEquals(VALID_FROM, test.getValidFrom()); assertEquals(VALID_TO, test.getValidTo()); test = ExternalIdWithDates.parse("Scheme~value~S~2010-01-01"); assertEquals(IDENTIFIER, test.toExternalId()); assertEquals(VALID_FROM, test.getValidFrom()); assertNull(test.getValidTo()); test = ExternalIdWithDates.parse("Scheme~value~E~2010-12-01"); assertEquals(IDENTIFIER, test.toExternalId()); assertEquals(VALID_TO, test.getValidTo()); assertNull(test.getValidFrom()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_parse_invalidFormat() { ExternalId.parse("Scheme:value"); } //------------------------------------------------------------------------- public void test_getIdentityKey() { ExternalIdWithDates test = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); assertEquals(IDENTIFIER, test.getExternalId()); } //------------------------------------------------------------------------- public void test_isValid() { ExternalIdWithDates test = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); assertEquals(true, test.isValidOn(null)); assertEquals(false, test.isValidOn(LocalDate.of(1999, 1, 1))); assertEquals(true, test.isValidOn(VALID_FROM)); assertEquals(true, test.isValidOn(VALID_TO)); assertEquals(false, test.isValidOn(LocalDate.of(2099, 1, 1))); } //------------------------------------------------------------------------- public void test_equals() { ExternalIdWithDates d1a = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); ExternalIdWithDates d1b = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); ExternalIdWithDates d2 = ExternalIdWithDates.of(IDENTIFIER, LocalDate.of(2000, 1, 1), LocalDate.of(2000, 12, 1)); assertEquals(true, d1a.equals(d1a)); assertEquals(true, d1a.equals(d1b)); assertEquals(false, d1a.equals(d2)); assertEquals(true, d1b.equals(d1a)); assertEquals(true, d1b.equals(d1b)); assertEquals(false, d1b.equals(d2)); assertEquals(false, d2.equals(d1a)); assertEquals(false, d2.equals(d1b)); assertEquals(true, d2.equals(d2)); assertEquals(false, d1b.equals("d1")); assertEquals(false, d1b.equals(null)); } public void test_hashCode() { ExternalIdWithDates d1a = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); ExternalIdWithDates d1b = ExternalIdWithDates.of(IDENTIFIER, VALID_FROM, VALID_TO); assertEquals(d1a.hashCode(), d1b.hashCode()); } }