### Question:
BlackFxVanillaOptionTradePricer { public MultiCurrencyAmount presentValue( ResolvedFxVanillaOptionTrade trade, RatesProvider ratesProvider, BlackFxOptionVolatilities volatilities) { ResolvedFxVanillaOption product = trade.getProduct(); CurrencyAmount pvProduct = productPricer.presentValue(product, ratesProvider, volatilities); Payment premium = trade.getPremium(); CurrencyAmount pvPremium = paymentPricer.presentValue(premium, ratesProvider); return MultiCurrencyAmount.of(pvProduct).plus(pvPremium); } BlackFxVanillaOptionTradePricer(
      BlackFxVanillaOptionProductPricer productPricer,
      DiscountingPaymentPricer paymentPricer); MultiCurrencyAmount presentValue(
      ResolvedFxVanillaOptionTrade trade,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); PointSensitivities presentValueSensitivityRatesStickyStrike(
      ResolvedFxVanillaOptionTrade trade,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); PointSensitivities presentValueSensitivityModelParamsVolatility(
      ResolvedFxVanillaOptionTrade trade,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); MultiCurrencyAmount currencyExposure(
      ResolvedFxVanillaOptionTrade trade,
      RatesProvider ratesProvider,
      BlackFxOptionVolatilities volatilities); CurrencyAmount currentCash(ResolvedFxVanillaOptionTrade trade, LocalDate valuationDate); static final BlackFxVanillaOptionTradePricer DEFAULT; }### Answer:
@Test public void test_presentValue() { MultiCurrencyAmount pvSensiTrade = PRICER_TRADE.presentValue(OPTION_TRADE, RATES_PROVIDER, VOLS); CurrencyAmount pvSensiProduct = PRICER_PRODUCT.presentValue(OPTION_PRODUCT, RATES_PROVIDER, VOLS); CurrencyAmount pvSensiPremium = PRICER_PAYMENT.presentValue(PREMIUM, RATES_PROVIDER); assertThat(pvSensiTrade).isEqualTo(MultiCurrencyAmount.of(pvSensiProduct, pvSensiPremium)); }