/** * 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 org.testng.annotations.Test; import com.opengamma.analytics.financial.model.interestrate.curve.YieldAndDiscountCurve; import com.opengamma.analytics.financial.model.interestrate.curve.YieldCurve; import com.opengamma.analytics.financial.provider.curve.CurveBuildingBlockBundle; import com.opengamma.analytics.financial.provider.description.interestrate.MulticurveProviderDiscount; import com.opengamma.analytics.math.curve.ConstantDoublesCurve; import com.opengamma.sesame.MulticurveBundle; import com.opengamma.util.money.Currency; import com.opengamma.util.test.TestGroup; @Test(groups = TestGroup.UNIT) public class MulticurveOutputParallelShiftTest { private static final String CURVE_NAME = "curveName"; private static final double RATE = 1.5; @Test public void absolute() { double shiftAmount = 0.01; MulticurveOutputParallelShift shift = MulticurveOutputParallelShift.absolute(shiftAmount); MulticurveBundle shiftedBundle = shift.apply(bundle(), StandardMatchDetails.multicurve(CURVE_NAME)); YieldAndDiscountCurve shiftedCurve = shiftedBundle.getMulticurveProvider().getDiscountingCurves().get(Currency.USD); assertEquals(RATE + shiftAmount, shiftedCurve.getInterestRate(0d)); assertEquals(RATE + shiftAmount, shiftedCurve.getInterestRate(1d)); } @Test public void relative() { double shiftAmount = 0.01; MulticurveOutputParallelShift shift = MulticurveOutputParallelShift.relative(shiftAmount); MulticurveBundle shiftedBundle = shift.apply(bundle(), StandardMatchDetails.multicurve(CURVE_NAME)); YieldAndDiscountCurve shiftedCurve = shiftedBundle.getMulticurveProvider().getDiscountingCurves().get(Currency.USD); assertEquals(RATE * (1 + shiftAmount), shiftedCurve.getInterestRate(0d)); assertEquals(RATE * (1 + shiftAmount), shiftedCurve.getInterestRate(1d)); } private MulticurveBundle bundle() { MulticurveProviderDiscount multicurve = new MulticurveProviderDiscount(); ConstantDoublesCurve curve = new ConstantDoublesCurve(RATE, CURVE_NAME); YieldCurve yieldCurve = YieldCurve.from(curve); multicurve.setCurve(Currency.USD, yieldCurve); return new MulticurveBundle(multicurve, new CurveBuildingBlockBundle()); } }