/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.sesame.function.scenarios.marketdata; import static org.testng.AssertJUnit.assertEquals; import org.testng.annotations.Test; import com.opengamma.id.ExternalIdBundle; import com.opengamma.util.test.TestGroup; @Test(groups = TestGroup.UNIT) public class MarketDataShockTest { private static final String SCHEME = "scheme"; private static final String VALUE = "value"; private static final MarketDataMatcher MATCHER = MarketDataMatcher.idEquals(SCHEME, VALUE); private static final ExternalIdBundle MATCHING_ID = ExternalIdBundle.of("scheme", "value"); private static final ExternalIdBundle NON_MATCHING_ID = ExternalIdBundle.of("scheme", "differentValue"); private static final double DELTA = 0.00000001; @Test public void absoluteShift() { MarketDataShock shockUp = MarketDataShock.absoluteShift(2d, MATCHER); assertEquals(5d, shockUp.apply(MATCHING_ID, 3d), DELTA); assertEquals(3d, shockUp.apply(NON_MATCHING_ID, 3d), DELTA); MarketDataShock shockDown = MarketDataShock.absoluteShift(-2d, MATCHER); assertEquals(1d, shockDown.apply(MATCHING_ID, 3d), DELTA); } @Test public void relativeShift() { MarketDataShock shockUp = MarketDataShock.relativeShift(0.5, MATCHER); assertEquals(3d, shockUp.apply(MATCHING_ID, 2d), DELTA); assertEquals(2d, shockUp.apply(NON_MATCHING_ID, 2d), DELTA); MarketDataShock shockDown = MarketDataShock.relativeShift(-0.5, MATCHER); assertEquals(1d, shockDown.apply(MATCHING_ID, 2d), DELTA); } @Test public void replace() { MarketDataShock shock = MarketDataShock.replace(7d, MATCHER); assertEquals(7d, shock.apply(MATCHING_ID, 1d)); assertEquals(1d, shock.apply(NON_MATCHING_ID, 1d)); } }