/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.data.scenario; import com.opengamma.strata.basics.currency.Currency; import com.opengamma.strata.basics.currency.FxRateProvider; /** * Testing implementation of {@link ScenarioFxRateProvider}. */ public class TestScenarioFxRateProvider implements ScenarioFxRateProvider { private final FxRateScenarioArray rates1; private final FxRateScenarioArray rates2; private final FxRateScenarioArray rates3; public TestScenarioFxRateProvider(FxRateScenarioArray rates1) { this.rates1 = rates1; this.rates2 = rates1; this.rates3 = rates1; } public TestScenarioFxRateProvider(FxRateScenarioArray rates1, FxRateScenarioArray rates2) { this.rates1 = rates1; this.rates2 = rates2; this.rates3 = rates2; } public TestScenarioFxRateProvider(FxRateScenarioArray rates1, FxRateScenarioArray rates2, FxRateScenarioArray rates3) { this.rates1 = rates1; this.rates2 = rates2; this.rates3 = rates3; } @Override public int getScenarioCount() { return rates1.getScenarioCount(); } @Override public FxRateProvider fxRateProvider(int scenarioIndex) { return new FxRateProvider() { @Override public double fxRate(Currency baseCurrency, Currency counterCurrency) { if (baseCurrency.equals(counterCurrency)) { return 1; } if (baseCurrency.equals(rates1.getPair().getBase())) { return rates1.fxRate(baseCurrency, counterCurrency, scenarioIndex); } else if (baseCurrency.equals(rates2.getPair().getBase())) { return rates2.fxRate(baseCurrency, counterCurrency, scenarioIndex); } else { return rates3.fxRate(baseCurrency, counterCurrency, scenarioIndex); } } }; } }