### Question:
FxNdf implements FxProduct, Resolvable<ResolvedFxNdf>, ImmutableBean, Serializable { public static FxNdf.Builder builder() { return new FxNdf.Builder(); } private  FxNdf(
      CurrencyAmount settlementCurrencyNotional,
      FxRate agreedFxRate,
      FxIndex index,
      LocalDate paymentDate); @Override CurrencyPair getCurrencyPair(); @Override ImmutableSet<Currency> allPaymentCurrencies(); Currency getSettlementCurrency(); Currency getNonDeliverableCurrency(); @Override ResolvedFxNdf resolve(ReferenceData refData); static FxNdf.Meta meta(); static FxNdf.Builder builder(); @Override FxNdf.Meta metaBean(); CurrencyAmount getSettlementCurrencyNotional(); FxRate getAgreedFxRate(); FxIndex getIndex(); LocalDate getPaymentDate(); Builder toBuilder(); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString();  }### Answer:
@Test public void test_builder_wrongRate() { FxRate fxRate = FxRate.of(GBP, EUR, 1.1d); assertThatIllegalArgumentException() .isThrownBy(() -> FxNdf.builder() .agreedFxRate(fxRate) .settlementCurrencyNotional(CURRENCY_NOTIONAL) .index(GBP_USD_WM) .paymentDate(PAYMENT_DATE) .build()); }
@Test public void test_builder_wrongCurrency() { assertThatIllegalArgumentException() .isThrownBy(() -> FxNdf.builder() .agreedFxRate(FX_RATE) .settlementCurrencyNotional(CurrencyAmount.of(EUR, NOTIONAL)) .index(GBP_USD_WM) .paymentDate(PAYMENT_DATE) .build()); }