### Question:
NormalIborFutureOptionMarginedTradePricer { public IborFutureOptionSensitivity presentValueSensitivityModelParamsVolatility( ResolvedIborFutureOptionTrade futureOptionTrade, RatesProvider ratesProvider, NormalIborFutureOptionVolatilities volatilities) { ResolvedIborFuture future = futureOptionTrade.getProduct().getUnderlyingFuture(); double futurePrice = futureOptionPricer.getFuturePricer().price(future, ratesProvider); return presentValueSensitivityModelParamsVolatility(futureOptionTrade, ratesProvider, volatilities, futurePrice); } NormalIborFutureOptionMarginedTradePricer(
      NormalIborFutureOptionMarginedProductPricer futureOptionPricer); double price(
      ResolvedIborFutureOptionTrade trade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities); CurrencyAmount presentValue(
      ResolvedIborFutureOptionTrade trade,
      LocalDate valuationDate,
      double currentOptionPrice,
      double lastOptionSettlementPrice); CurrencyAmount presentValue(
      ResolvedIborFutureOptionTrade trade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities,
      double lastOptionSettlementPrice); CurrencyAmount presentValue(
      ResolvedIborFutureOptionTrade trade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities,
      double futurePrice,
      double lastOptionSettlementPrice); PointSensitivities presentValueSensitivityRates(
      ResolvedIborFutureOptionTrade trade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities); IborFutureOptionSensitivity presentValueSensitivityModelParamsVolatility(
      ResolvedIborFutureOptionTrade futureOptionTrade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities); IborFutureOptionSensitivity presentValueSensitivityModelParamsVolatility(
      ResolvedIborFutureOptionTrade futureOptionTrade,
      RatesProvider ratesProvider,
      NormalIborFutureOptionVolatilities volatilities,
      double futurePrice); static final NormalIborFutureOptionMarginedTradePricer DEFAULT; }### Answer:
@Test public void presentvalue_normalVolSensitivity_from_env() { IborIndexRates mockIbor = mock(IborIndexRates.class); SimpleRatesProvider prov = new SimpleRatesProvider(); prov.setIborRates(mockIbor); when(mockIbor.rate(OPTION.getUnderlyingFuture().getIborRate().getObservation())).thenReturn(RATE); IborFutureOptionSensitivity psProduct = OPTION_PRODUCT_PRICER.priceSensitivityModelParamsVolatility(OPTION, prov, VOL_SIMPLE_MONEY_PRICE); IborFutureOptionSensitivity psExpected = psProduct.withSensitivity( psProduct.getSensitivity() * OPTION_PRODUCT_PRICER.marginIndex(OPTION, 1) * OPTION_QUANTITY); IborFutureOptionSensitivity psComputed = OPTION_TRADE_PRICER .presentValueSensitivityModelParamsVolatility(FUTURE_OPTION_TRADE, prov, VOL_SIMPLE_MONEY_PRICE); assertThat(psExpected.compareKey(psComputed) == 0).isTrue(); assertThat(psComputed.getSensitivity()).isCloseTo(psExpected.getSensitivity(), offset(TOLERANCE_PV_DELTA)); }