/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.measure.calc; import static com.opengamma.strata.collect.TestHelper.assertThrowsIllegalArg; import static com.opengamma.strata.collect.TestHelper.coverBeanEquals; import static com.opengamma.strata.collect.TestHelper.coverImmutableBean; import static org.testng.Assert.assertEquals; import java.util.Optional; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; import com.opengamma.strata.basics.StandardId; import com.opengamma.strata.basics.currency.Currency; import com.opengamma.strata.basics.currency.CurrencyAmount; import com.opengamma.strata.calc.TestingMeasures; import com.opengamma.strata.calc.runner.CalculationParameter; import com.opengamma.strata.calc.runner.TestParameter; import com.opengamma.strata.calc.runner.TestParameter2; import com.opengamma.strata.product.GenericSecurity; import com.opengamma.strata.product.GenericSecurityTrade; import com.opengamma.strata.product.SecurityId; import com.opengamma.strata.product.SecurityInfo; import com.opengamma.strata.product.TradeInfo; /** * Test {@link TradeCounterpartyCalculationParameter}. */ @Test public class TradeCounterpartyCalculationParameterTest { private static final CalculationParameter PARAM1 = new TestParameter(); private static final CalculationParameter PARAM2 = new TestParameter(); private static final CalculationParameter PARAM3 = new TestParameter(); private static final CalculationParameter PARAM_OTHER = new TestParameter2(); private static final StandardId ID1 = StandardId.of("test", "cpty1"); private static final StandardId ID2 = StandardId.of("test", "cpty2"); private static final StandardId ID3 = StandardId.of("test", "cpty3"); private static final SecurityInfo SEC_INFO_1 = SecurityInfo.of(SecurityId.of("test", "sec1"), 1.0, CurrencyAmount.of(Currency.EUR, 1.0)); private static final GenericSecurity SEC_1 = GenericSecurity.of(SEC_INFO_1); private static final TradeInfo TRADE_INFO_1 = TradeInfo.builder().counterparty(ID1).build(); private static final GenericSecurityTrade TRADE_1 = GenericSecurityTrade.of(TRADE_INFO_1, SEC_1, 1, 1.0); private static final SecurityInfo SEC_INFO_2 = SecurityInfo.of(SecurityId.of("test", "sec2"), 2.0, CurrencyAmount.of(Currency.EUR, 2.0)); private static final GenericSecurity SEC_2 = GenericSecurity.of(SEC_INFO_2); private static final TradeInfo TRADE_INFO_2 = TradeInfo.builder().counterparty(ID2).build(); private static final GenericSecurityTrade TRADE_2 = GenericSecurityTrade.of(TRADE_INFO_2, SEC_2, 2, 2.0); private static final TradeInfo TRADE_INFO_3 = TradeInfo.builder().counterparty(ID3).build(); private static final GenericSecurityTrade TRADE_3 = GenericSecurityTrade.of(TRADE_INFO_3, SEC_2, 2, 2.0); //------------------------------------------------------------------------- public void test_of() { TradeCounterpartyCalculationParameter test = TradeCounterpartyCalculationParameter.of( ImmutableMap.of(ID1, PARAM1, ID2, PARAM2), PARAM3); assertEquals(test.getQueryType(), TestParameter.class); assertEquals(test.getParameters().size(), 2); assertEquals(test.getDefaultParameter(), PARAM3); assertEquals(test.queryType(), TestParameter.class); assertEquals(test.filter(TRADE_1, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM1)); assertEquals(test.filter(TRADE_2, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM2)); assertEquals(test.filter(TRADE_3, TestingMeasures.PRESENT_VALUE), Optional.of(PARAM3)); } public void of_empty() { assertThrowsIllegalArg(() -> TradeCounterpartyCalculationParameter.of(ImmutableMap.of(), PARAM3)); } public void of_badType() { assertThrowsIllegalArg(() -> TradeCounterpartyCalculationParameter.of(ImmutableMap.of(ID1, PARAM_OTHER), PARAM3)); } //------------------------------------------------------------------------- public void coverage() { TradeCounterpartyCalculationParameter test = TradeCounterpartyCalculationParameter.of( ImmutableMap.of(ID1, PARAM1, ID2, PARAM2), PARAM3); coverImmutableBean(test); TradeCounterpartyCalculationParameter test2 = TradeCounterpartyCalculationParameter.of( ImmutableMap.of(ID1, PARAM1), PARAM2); coverBeanEquals(test, test2); } }