/**
* 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.analytics.financial.instrument.index.IndexON;
import com.opengamma.financial.convention.daycount.DayCounts;
import com.opengamma.sesame.marketdata.MulticurveId;
import com.opengamma.util.money.Currency;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class IndexMulticurveFilterTest {
@Test
public void bundle() {
IndexMulticurveFilter gbpOnFilter = new IndexMulticurveFilter(MulticurveFilterTestUtils.GBP_OVERNIGHT_INDEX);
Set<MulticurveMatchDetails> gbpOnMatches =
gbpOnFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
Set<MulticurveMatchDetails> expectedGpbOnMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_OVERNIGHT));
assertEquals(expectedGpbOnMatches, gbpOnMatches);
IndexMulticurveFilter eurLiborFilter = new IndexMulticurveFilter(MulticurveFilterTestUtils.EUR_LIBOR_6M_INDEX);
Set<MulticurveMatchDetails> eurLiborMatches =
eurLiborFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
Set<MulticurveMatchDetails> expectedEurLiborMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.EUR_LIBOR_6M));
assertEquals(expectedEurLiborMatches, eurLiborMatches);
IndexON chfOnIndex = new IndexON("CHF Overnight Index", Currency.CHF, DayCounts.ACT_360, 0);
IndexMulticurveFilter nonMatchingFilter = new IndexMulticurveFilter(chfOnIndex);
Set<MulticurveMatchDetails> nonMatchingMatches =
nonMatchingFilter.apply(MulticurveId.of("not used"), MulticurveFilterTestUtils.bundle());
assertEquals(ImmutableSet.<MulticurveMatchDetails>of(), nonMatchingMatches);
}
@Test
public void config() {
MulticurveFilterTestUtils.initializeServiceContext();
MulticurveId multicurveId = MulticurveId.of(MulticurveFilterTestUtils.CURVE_CONFIG_NAME);
IndexMulticurveFilter gbpOnFilter = new IndexMulticurveFilter(MulticurveFilterTestUtils.GBP_OVERNIGHT_INDEX);
Set<MulticurveMatchDetails> gbpOnMatches = gbpOnFilter.apply(multicurveId);
Set<MulticurveMatchDetails> expectedGpbOnMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.GBP_OVERNIGHT));
assertEquals(expectedGpbOnMatches, gbpOnMatches);
IndexMulticurveFilter eurLiborFilter = new IndexMulticurveFilter(MulticurveFilterTestUtils.EUR_LIBOR_6M_INDEX);
Set<MulticurveMatchDetails> eurLiborMatches = eurLiborFilter.apply(multicurveId);
Set<MulticurveMatchDetails> expectedEurLiborMatches =
ImmutableSet.of(StandardMatchDetails.multicurve(MulticurveFilterTestUtils.EUR_LIBOR_6M));
assertEquals(expectedEurLiborMatches, eurLiborMatches);
IndexON chfOnIndex = new IndexON("CHF Overnight Index", Currency.CHF, DayCounts.ACT_360, 0);
IndexMulticurveFilter nonMatchingFilter = new IndexMulticurveFilter(chfOnIndex);
Set<MulticurveMatchDetails> nonMatchingMatches = nonMatchingFilter.apply(multicurveId);
assertEquals(ImmutableSet.<MulticurveMatchDetails>of(), nonMatchingMatches);
}
}