Package com.opengamma.financial.generator

Source Code of com.opengamma.financial.generator.SecurityPersisterTest$Impl

/**
* 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));
  }
 
}
TOP

Related Classes of com.opengamma.financial.generator.SecurityPersisterTest$Impl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.