/** * Adds market data values for each scenario. * <p> * Each value in the map contains multiple market data items, one for each scenario. * Any existing value with the same identifier will be replaced. * * @param values the items of market data, keyed by identifier * @return this builder */ public ImmutableScenarioMarketDataBuilder addScenarioValueMap( Map<? extends MarketDataId<?>, ? extends ScenarioArray<?>> values) { ArgChecker.notNull(values, "values"); for (Entry<? extends MarketDataId<?>, ? extends ScenarioArray<?>> entry : values.entrySet()) { MarketDataId<?> id = entry.getKey(); ScenarioArray<?> value = entry.getValue(); MarketDataBox<?> box = MarketDataBox.ofScenarioValue(value); checkBoxType(id, box); checkAndUpdateScenarioCount(box); this.values.put(id, box); } return this; }
/** * Adds market data for each scenario. * <p> * Any existing value with the same identifier will be replaced. * * @param id the identifier * @param value the market data values, one for each scenario * @param <T> the type of the market data values * @return this builder */ public <T> ImmutableScenarioMarketDataBuilder addScenarioValue(MarketDataId<T> id, ScenarioArray<? extends T> value) { ArgChecker.notNull(id, "id"); ArgChecker.notNull(value, "values"); MarketDataBox<? extends T> box = MarketDataBox.ofScenarioValue(value); checkAndUpdateScenarioCount(box); this.values.put(id, box); return this; }
public void getScenarioValueFromRequestedScenarioValue() { MarketDataBox<Double> box = MarketDataBox.ofScenarioValue(new TestDoubleArray(DoubleArray.of(9d, 9d, 9d))); TestMarketData marketData = new TestMarketData(box); TestArrayKey key = new TestArrayKey(); TestDoubleArray array = marketData.getScenarioValue(key); assertThat(array.values).isEqualTo(DoubleArray.of(9, 9, 9)); }
public void test_addScenarioValueMap() { FxRateId eurGbpId = FxRateId.of(Currency.EUR, Currency.GBP); FxRateId eurUsdId = FxRateId.of(Currency.EUR, Currency.USD); FxRateScenarioArray eurGbpRates = FxRateScenarioArray.of(Currency.EUR, Currency.GBP, DoubleArray.of(0.79, 0.8, 0.81)); FxRateScenarioArray eurUsdRates = FxRateScenarioArray.of(Currency.EUR, Currency.USD, DoubleArray.of(1.09, 1.1, 1.11)); Map<FxRateId, FxRateScenarioArray> values = ImmutableMap.of( eurGbpId, eurGbpRates, eurUsdId, eurUsdRates); ImmutableScenarioMarketData marketData = ImmutableScenarioMarketData.builder(VAL_DATE) .addScenarioValueMap(values) .build(); assertEquals(marketData.getScenarioCount(), 3); assertEquals(marketData.getIds(), ImmutableSet.of(eurGbpId, eurUsdId)); assertEquals(marketData.getValue(eurGbpId), MarketDataBox.ofScenarioValue(eurGbpRates)); assertEquals(marketData.getValue(eurUsdId), MarketDataBox.ofScenarioValue(eurUsdRates)); }