/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import static org.testng.AssertJUnit.assertTrue;
import java.util.Collections;
import java.util.Map;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.opengamma.analytics.financial.forex.method.FXMatrix;
import com.opengamma.core.holiday.HolidaySource;
import com.opengamma.core.legalentity.LegalEntitySource;
import com.opengamma.core.region.RegionSource;
import com.opengamma.financial.analytics.curve.CurveConstructionConfiguration;
import com.opengamma.financial.analytics.curve.CurveDefinition;
import com.opengamma.financial.analytics.curve.CurveGroupConfiguration;
import com.opengamma.financial.analytics.ircurve.strips.CurveNode;
import com.opengamma.financial.convention.ConventionBundleSource;
import com.opengamma.sesame.component.StringSet;
import com.opengamma.util.result.Result;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class DefaultDiscountingMulticurveBundleFnTest {
private static final String IMPLIED_DEPO = "implied depo";
private DefaultDiscountingMulticurveBundleFn _fn;
private Environment _env = mock(Environment.class);
private CurveConstructionConfiguration _ccc = mock(CurveConstructionConfiguration.class);
private CurveConstructionConfiguration _cccExo = mock(CurveConstructionConfiguration.class);
private FXMatrixFn _fxmProvider = mock(FXMatrixFn.class);
@BeforeMethod
public void setup() {
RootFinderConfiguration rootFinderConfig = new RootFinderConfiguration(1e-9, 1e-9, 1000);
HolidaySource holidaySource = mock(HolidaySource.class);
_fn = new DefaultDiscountingMulticurveBundleFn(
null, null, null, _fxmProvider,
holidaySource, null, rootFinderConfig,
new CurveNodeInstrumentDefinitionFactory(holidaySource,
mock(RegionSource.class),
mock(ConventionBundleSource.class),
mock(LegalEntitySource.class)),
StringSet.of(IMPLIED_DEPO));
}
@SuppressWarnings("unchecked")
@Test
public void generateBundle() {
when(_fxmProvider.getFXMatrix(_env, _ccc)).thenReturn(Result.success(mock(FXMatrix.class)));
when(_ccc.resolveCurveConfigurations()).thenReturn(Collections.singletonList(_cccExo));
when(_fxmProvider.getFXMatrix(_env, _cccExo)).thenReturn(Result.<FXMatrix> failure(new Exception()));
CurveGroupConfiguration cgc = mock(CurveGroupConfiguration.class);
when(_ccc.getCurveGroups()).thenReturn(Lists.newArrayList(cgc));
CurveDefinition cd = new CurveDefinition(IMPLIED_DEPO, Collections.<CurveNode> emptySet());
@SuppressWarnings("rawtypes")
Map map = ImmutableMap.of(cd, Lists.newArrayList());
when(cgc.resolveTypesForCurves()).thenReturn(map);
Result<MulticurveBundle> result = _fn.generateBundle(_env, _ccc,
ImmutableMap.<CurveConstructionConfiguration, Result<MulticurveBundle>>of());
assertTrue("Expected failure", !result.isSuccess());
}
}