/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.financial.generator; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertSame; import org.testng.annotations.Test; import org.threeten.bp.ZonedDateTime; import com.opengamma.financial.security.option.AmericanExerciseType; import com.opengamma.financial.security.option.EquityOptionSecurity; import com.opengamma.financial.security.option.OptionType; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.id.UniqueId; import com.opengamma.master.security.ManageableSecurity; import com.opengamma.util.money.Currency; import com.opengamma.util.test.TestGroup; import com.opengamma.util.time.Expiry; /** * Test. */ @Test(groups = TestGroup.UNIT) public class SecurityPersisterTest { private static class Impl extends SecurityPersister { private ManageableSecurity _security; @Override protected void storeSecurityImpl(final ManageableSecurity security) { _security = security; security.setUniqueId(UniqueId.of("Foo", "Bar")); } } public void testDuplicateSecurities() { final Impl impl = new Impl(); ZonedDateTime now = ZonedDateTime.now(); final EquityOptionSecurity security1 = new EquityOptionSecurity(OptionType.CALL, 1.0, Currency.USD, ExternalId.of("S", "V"), new AmericanExerciseType(), new Expiry(now), 1.0, "EXCH"); final EquityOptionSecurity security2 = new EquityOptionSecurity(OptionType.CALL, 1.0, Currency.USD, ExternalId.of("S", "V"), new AmericanExerciseType(), new Expiry(now), 1.0, "EXCH"); final ExternalIdBundle identifiers1 = impl.storeSecurity(security1); assertSame(impl._security, security1); assertEquals(security1.getExternalIdBundle(), identifiers1); impl._security = null; final ExternalIdBundle identifiers2 = impl.storeSecurity(security2); assertNull(impl._security); assertSame(identifiers2, identifiers1); } public void testDifferentSecurities() { final Impl impl = new Impl(); final EquityOptionSecurity security1 = new EquityOptionSecurity(OptionType.CALL, 1.0, Currency.USD, ExternalId.of("S", "V1"), new AmericanExerciseType(), new Expiry(ZonedDateTime.now()), 1.0, "EXCH"); final EquityOptionSecurity security2 = new EquityOptionSecurity(OptionType.CALL, 1.0, Currency.USD, ExternalId.of("S", "V2"), new AmericanExerciseType(), new Expiry(ZonedDateTime.now()), 1.0, "EXCH"); final ExternalIdBundle identifiers1 = impl.storeSecurity(security1); assertSame(impl._security, security1); assertEquals(security1.getExternalIdBundle(), identifiers1); impl._security = null; final ExternalIdBundle identifiers2 = impl.storeSecurity(security2); assertSame(impl._security, security2); assertEquals(security2.getExternalIdBundle(), identifiers2); assertFalse(identifiers1.equals(identifiers2)); } }