package name.abuchen.portfolio.money.impl; import static org.hamcrest.number.IsCloseTo.closeTo; import static org.hamcrest.number.OrderingComparison.comparesEqualTo; import static org.junit.Assert.assertThat; import java.math.BigDecimal; import java.time.LocalDate; import org.junit.Test; import name.abuchen.portfolio.money.ExchangeRateProviderFactory; import name.abuchen.portfolio.money.ExchangeRateTimeSeries; @SuppressWarnings("nls") public class AEDExchangeRateProviderTest { @Test public void testIt() { ExchangeRateProviderFactory factory = new ExchangeRateProviderFactory(); ExchangeRateTimeSeries usd_aed = factory.getTimeSeries("USD", "AED"); assertThat(usd_aed.lookupRate(LocalDate.now()).get().getValue(), comparesEqualTo(new BigDecimal("3.6725"))); ExchangeRateTimeSeries aed_usd = factory.getTimeSeries("AED", "USD"); assertThat(aed_usd.lookupRate(LocalDate.now()).get().getValue(), comparesEqualTo( BigDecimal.ONE.divide(new BigDecimal("3.6725"), 10, BigDecimal.ROUND_HALF_DOWN))); // EUR -> USD -> AED // default value EUR -> USD is 1.0836 double calculatedRate = 1.0836d * 3.6725d; ExchangeRateTimeSeries eur_aed = factory.getTimeSeries("EUR", "AED"); assertThat(eur_aed.lookupRate(LocalDate.now()).get().getValue().doubleValue(), closeTo(calculatedRate, 0.00000001)); } }