/**
* Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.marketdata.scenarios;
import static org.testng.AssertJUnit.assertEquals;
import java.util.Set;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableSet;
import com.opengamma.financial.analytics.curve.CurveConstructionConfiguration;
import com.opengamma.sesame.MulticurveBundle;
import com.opengamma.sesame.marketdata.MulticurveId;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class CurrencyMulticurveFilterTest {
/**
* Tests matching curves by currency in an existing {@link MulticurveBundle}.
*/
@Test
public void bundle() {
CurrencyMulticurveFilter usdFilter = new CurrencyMulticurveFilter(Currency.USD);
Set<MulticurveMatchDetails> usdMatches =
usdFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
ImmutableSet<MulticurveMatchDetails> expectedUsdMatches =
ImmutableSet.of(
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_DISCOUNTING),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_LIBOR_3M),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_OVERNIGHT));
assertEquals(expectedUsdMatches, usdMatches);
CurrencyMulticurveFilter gbpFilter = new CurrencyMulticurveFilter(Currency.GBP);
Set<MulticurveMatchDetails> gbpMatches =
gbpFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
ImmutableSet<MulticurveMatchDetails> expectedGbpMatches =
ImmutableSet.of(
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_DISCOUNTING),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_OVERNIGHT));
assertEquals(expectedGbpMatches, gbpMatches);
CurrencyMulticurveFilter eurFilter = new CurrencyMulticurveFilter(Currency.EUR);
Set<MulticurveMatchDetails> eurMatches =
eurFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
ImmutableSet<MulticurveMatchDetails> expectedEurMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.EUR_LIBOR_6M));
assertEquals(expectedEurMatches, eurMatches);
CurrencyMulticurveFilter chfFilter = new CurrencyMulticurveFilter(Currency.CHF);
Set<MulticurveMatchDetails> chfMatches =
chfFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
assertEquals(ImmutableSet.<MulticurveMatchDetails>of(), chfMatches);
}
/**
* Tests matching curves by currency in a {@link CurveConstructionConfiguration}.
*/
@Test
public void config() {
MulticurveFilterTestUtils.initializeServiceContext();
MulticurveId multicurveId = MulticurveId.of(MulticurveFilterTestUtils.CURVE_CONFIG_NAME);
CurrencyMulticurveFilter usdFilter = new CurrencyMulticurveFilter(Currency.USD);
Set<MulticurveMatchDetails> usdMatches = usdFilter.apply(multicurveId);
ImmutableSet<MulticurveMatchDetails> expectedUsdMatches =
ImmutableSet.of(
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_DISCOUNTING),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_LIBOR_3M),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.USD_OVERNIGHT));
assertEquals(expectedUsdMatches, usdMatches);
CurrencyMulticurveFilter gbpFilter = new CurrencyMulticurveFilter(Currency.GBP);
Set<MulticurveMatchDetails> gbpMatches = gbpFilter.apply(multicurveId);
ImmutableSet<MulticurveMatchDetails> expectedGbpMatches =
ImmutableSet.of(
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_DISCOUNTING),
StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_OVERNIGHT));
assertEquals(expectedGbpMatches, gbpMatches);
CurrencyMulticurveFilter eurFilter = new CurrencyMulticurveFilter(Currency.EUR);
Set<MulticurveMatchDetails> eurMatches = eurFilter.apply(multicurveId);
ImmutableSet<MulticurveMatchDetails> expectedEurMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.EUR_LIBOR_6M));
assertEquals(expectedEurMatches, eurMatches);
CurrencyMulticurveFilter chfFilter = new CurrencyMulticurveFilter(Currency.CHF);
Set<MulticurveMatchDetails> chfMatches = chfFilter.apply(multicurveId);
assertEquals(ImmutableSet.<MulticurveMatchDetails>of(), chfMatches);
}
}