/**
* Copyright (C) 2011 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.analytics.financial.forex.method;
import static org.testng.AssertJUnit.assertEquals;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.annotations.Test;
import com.opengamma.analytics.financial.interestrate.InterestRateCurveSensitivity;
import com.opengamma.analytics.financial.util.AssertSensitivityObjects;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.tuple.DoublesPair;
/**
* Tests related to the construction of multiple currency interest rate sensitivity.
*/
@Test(groups = TestGroup.UNIT)
public class MultipleCurrencyInterestRateCurveSensitivityTest {
private static final Currency USD = Currency.USD;
private static final Currency EUR = Currency.EUR;
private static final String DSC_USD = "USD Discounting";
private static final InterestRateCurveSensitivity IRCS_EMPTY = new InterestRateCurveSensitivity();
private static final Map<String, List<DoublesPair>> SENSI_MAP = new HashMap<>();
private static final List<DoublesPair> SENSI_LIST_1 = new ArrayList<>();
static {
SENSI_LIST_1.add(DoublesPair.of(1.0, 10000.0));
SENSI_LIST_1.add(DoublesPair.of(2.0, -20000.0));
SENSI_MAP.put(DSC_USD, SENSI_LIST_1);
}
private static final InterestRateCurveSensitivity IRCS = new InterestRateCurveSensitivity(SENSI_MAP);
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullCurrency() {
MultipleCurrencyInterestRateCurveSensitivity.of(null, IRCS);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void nullIRCS() {
MultipleCurrencyInterestRateCurveSensitivity.of(USD, null);
}
@Test
public void of() {
final MultipleCurrencyInterestRateCurveSensitivity mcIRCS = MultipleCurrencyInterestRateCurveSensitivity.of(USD, IRCS);
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS, mcIRCS.getSensitivity(USD));
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS_EMPTY, mcIRCS.getSensitivity(EUR));
}
@Test
public void plus() {
final double tolerance = 1.0E-2;
MultipleCurrencyInterestRateCurveSensitivity mcIRCS = MultipleCurrencyInterestRateCurveSensitivity.of(USD, IRCS);
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS, mcIRCS.getSensitivity(USD));
mcIRCS = mcIRCS.plus(EUR, IRCS_EMPTY);
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS, mcIRCS.getSensitivity(USD));
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS_EMPTY, mcIRCS.getSensitivity(EUR));
mcIRCS = mcIRCS.plus(USD, IRCS);
AssertSensitivityObjects.assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS.multipliedBy(2.0), mcIRCS.getSensitivity(USD).cleaned(), tolerance);
assertEquals("MultipleCurrencyInterestRateCurveSensitivity", IRCS_EMPTY, mcIRCS.getSensitivity(EUR));
}
}