DepositIborDiscountingMethod { public double parRate(final DepositIbor deposit, final MulticurveProviderInterface multicurve) { return multicurve.getSimplyCompoundForwardRate(deposit.getIndex(), deposit.getStartTime(), deposit.getEndTime(), deposit.getAccrualFactor()); } private  DepositIborDiscountingMethod(); static DepositIborDiscountingMethod getInstance(); MultipleCurrencyAmount presentValue(final DepositIbor deposit, final MulticurveProviderInterface multicurves); MultipleCurrencyMulticurveSensitivity presentValueCurveSensitivity(final DepositIbor deposit, final MulticurveProviderInterface multicurves); double parRate(final DepositIbor deposit, final MulticurveProviderInterface multicurve); double parSpread(final DepositIbor deposit, final MulticurveProviderInterface multicurve); MulticurveSensitivity parSpreadCurveSensitivity(final DepositIbor deposit, final MulticurveProviderInterface multicurve);  }
@Test public void parRateBeforeStart() { final ZonedDateTime referenceDate = TRADE_DATE; final DepositIbor deposit = DEPOSIT_IBOR_DEFINITION.toDerivative(referenceDate); final double parRate = METHOD_DEPOSIT.parRate(deposit, PROVIDER_MULTICURVES); double parRateExpected = PROVIDER_MULTICURVES.getSimplyCompoundForwardRate(EURIBOR3M, deposit.getStartTime(), deposit.getEndTime(), deposit.getAccrualFactor()); assertEquals("DepositDefinition: present value", parRateExpected, parRate, TOLERANCE_SPREAD); }