### Question:
ExchangeBasedCurrencyValue extends CurrencyValue { static public CurrencyValue from(BigDecimal value, String currency) { if (currency.equals(CurrencyValue.BTC)) { return new ExchangeBasedBitcoinValue(currency, value); } else { return new ExchangeBasedFiatValue(currency, value); } } protected  ExchangeBasedCurrencyValue(String currency, ExactCurrencyValue basedOnExactValue); static CurrencyValue fromValue(CurrencyValue currencyValue, String targetCurrency, ExchangeRateProvider exchangeRateManager); static CurrencyValue fromValue(ExchangeBasedCurrencyValue currencyValue, String targetCurrency, ExchangeRateProvider exchangeRateManager); static CurrencyValue fromValue(ExactCurrencyValue currencyValue, String targetCurrency, ExchangeRateProvider exchangeRateManager); static CurrencyValue from(BigDecimal value, String currency); static CurrencyValue convertFromValue(ExchangeBasedCurrencyValue value, String targetCurrency, ExchangeRateProvider exchangeRateManager); static CurrencyValue fromExactValue(ExactCurrencyValue exactValue, String targetCurrency, ExchangeRateProvider exchangeRateManager); @Override String getCurrency(); @Override boolean hasExactValue(); @Override ExactCurrencyValue getExactValue();  }### Answer:
@Test public void testFrom() throws Exception { }