// ----------     price     ----------
        public virtual void price_from_future_price()
        {
            IborIndexRates      mockIbor = mock(typeof(IborIndexRates));
            SimpleRatesProvider prov     = new SimpleRatesProvider();

            prov.IborRates = mockIbor;
            when(mockIbor.rate(OPTION.UnderlyingFuture.IborRate.Observation)).thenReturn(RATE);

            double futurePrice                = 0.9875;
            double strike                     = OPTION.StrikePrice;
            double timeToExpiry               = ACT_365F.relativeYearFraction(VAL_DATE, OPTION.ExpiryDate);
            double priceSimpleMoneyness       = strike - futurePrice;
            double normalVol                  = PARAMETERS_PRICE.zValue(timeToExpiry, priceSimpleMoneyness);
            EuropeanVanillaOption option      = EuropeanVanillaOption.of(strike, timeToExpiry, OPTION.PutCall);
            NormalFunctionData    normalPoint = NormalFunctionData.of(futurePrice, 1.0, normalVol);
            double optionPriceExpected        = NORMAL_FUNCTION.getPriceFunction(option).apply(normalPoint);
            double optionPriceComputed        = OPTION_PRICER.price(OPTION, prov, VOL_SIMPLE_MONEY_PRICE, futurePrice);

            assertEquals(optionPriceComputed, optionPriceExpected, TOLERANCE_PRICE);
        }
 public FuncAnonymousInnerClass(NormalPriceFunction outerInstance, com.opengamma.strata.pricer.impl.option.EuropeanVanillaOption option)
 {
     this.outerInstance = outerInstance;
     this.option        = option;
 }