### Question:
Money implements FxConvertible<Money>, Comparable<Money>, Serializable { public Money convertedTo(Currency resultCurrency, BigDecimal fxRate) { if (currency.equals(resultCurrency)) { if (DoubleMath.fuzzyEquals(fxRate.doubleValue(), 1d, 1e-8)) { return this; } throw new IllegalArgumentException("FX rate must be 1 when no conversion required"); } return Money.of(resultCurrency, amount.multiply(fxRate)); } private  Money(Currency currency, BigDecimal amount); static Money zero(Currency currency); static Money of(CurrencyAmount currencyAmount); static Money of(Currency currency, double amount); static Money of(Currency currency, BigDecimal amount); @FromString static Money parse(String amountStr); Currency getCurrency(); BigDecimal getAmount(); Money plus(Money amountToAdd); Money minus(Money amountToSubtract); Money multipliedBy(long valueToMultiplyBy); boolean isZero(); boolean isPositive(); boolean isNegative(); CurrencyAmount toCurrencyAmount(); Money convertedTo(Currency resultCurrency, BigDecimal fxRate); @Override Money convertedTo(Currency resultCurrency, FxRateProvider rateProvider); @Override int compareTo(Money other); @Override boolean equals(Object obj); @Override int hashCode(); @Override @ToString String toString();  }### Answer:
@Test public void testConvertedToWithExplicitRateForSameCurrency() throws Exception { assertThatIllegalArgumentException() .isThrownBy(() -> MONEY_200_RON.convertedTo(CCY_RON, BigDecimal.valueOf(1.1))) .withMessage("FX rate must be 1 when no conversion required"); }