### Question:
SabrExtrapolationRightFunction { public double price(double strike, PutCall putCall) { if (strike <= cutOffStrike) { double volatility = sabrFunction.volatility(forward, strike, timeToExpiry, sabrData); return BlackFormulaRepository.price(forward, strike, timeToExpiry, volatility, putCall.isCall()); } double price = extrapolation(strike); if (putCall.isPut()) { price -= (forward - strike); } return price; } private  SabrExtrapolationRightFunction(double forward, SabrFormulaData sabrData, double cutOffStrike,
      double timeToExpiry, double mu, VolatilityFunctionProvider<SabrFormulaData> volatilityFunction); static SabrExtrapolationRightFunction of(
      double forward,
      double timeToExpiry,
      SabrFormulaData sabrData,
      double cutOffStrike,
      double mu); static SabrExtrapolationRightFunction of(
      double forward,
      SabrFormulaData sabrData,
      double cutOffStrike,
      double timeToExpiry,
      double mu,
      VolatilityFunctionProvider<SabrFormulaData> volatilityFunction); double price(double strike, PutCall putCall); double priceDerivativeStrike(double strike, PutCall putCall); double priceDerivativeForward(double strike, PutCall putCall); ValueDerivatives priceAdjointSabr(double strike, PutCall putCall); SabrFormulaData getSabrData(); double getCutOffStrike(); double getMu(); double getTimeToExpiry(); double[] getParameter(); double[] getParameterDerivativeForward(); double[][] getParameterDerivativeSabr();  }### Answer:
@Test public void price() { double strikeIn = 0.08; double strikeAt = CUT_OFF_STRIKE; double strikeOut = 0.12; double volatilityIn = SABR_FUNCTION.volatility(FORWARD, strikeIn, TIME_TO_EXPIRY, SABR_DATA); double priceExpectedIn = BlackFormulaRepository.price(FORWARD, strikeIn, TIME_TO_EXPIRY, volatilityIn, true); double priceIn = SABR_EXTRAPOLATION.price(strikeIn, PutCall.CALL); assertThat(priceExpectedIn).isCloseTo(priceIn, offset(TOLERANCE_PRICE)); double volatilityAt = SABR_FUNCTION.volatility(FORWARD, strikeAt, TIME_TO_EXPIRY, SABR_DATA); double priceExpectedAt = BlackFormulaRepository.price(FORWARD, strikeAt, TIME_TO_EXPIRY, volatilityAt, true); double priceAt = SABR_EXTRAPOLATION.price(strikeAt, PutCall.CALL); assertThat(priceExpectedAt).isCloseTo(priceAt, offset(TOLERANCE_PRICE)); double priceOut = SABR_EXTRAPOLATION.price(strikeOut, PutCall.CALL); double priceExpectedOut = 5.427104E-5; assertThat(priceExpectedOut).isCloseTo(priceOut, offset(TOLERANCE_PRICE)); }