package name.abuchen.portfolio.money.impl;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import java.math.BigDecimal;
import java.time.LocalDate;
import name.abuchen.portfolio.money.ExchangeRate;
import org.junit.Test;
@SuppressWarnings("nls")
public class InverseExchangeRateTimeSeriesTest
{
@Test
public void testInverseLookupOfExchangeRate()
{
ExchangeRateTimeSeriesImpl source = new ExchangeRateTimeSeriesImpl(null, "EUR", "USD");
source.addRate(new ExchangeRate(LocalDate.parse("2014-12-01"), BigDecimal.valueOf(1)));
source.addRate(new ExchangeRate(LocalDate.parse("2014-12-02"), BigDecimal.valueOf(2)));
source.addRate(new ExchangeRate(LocalDate.parse("2014-12-03"), BigDecimal.valueOf(3)));
InverseExchangeRateTimeSeries inverse = new InverseExchangeRateTimeSeries(source);
assertThat(inverse.lookupRate(LocalDate.parse("2014-11-30")).get().getValue(), is(new BigDecimal(1).setScale(10)));
assertThat(inverse.lookupRate(LocalDate.parse("2014-12-01")).get().getValue(), is(new BigDecimal(1).setScale(10)));
assertThat(inverse.lookupRate(LocalDate.parse("2014-12-02")).get().getValue(),
is(new BigDecimal(0.500).setScale(10)));
assertThat(inverse.lookupRate(LocalDate.parse("2014-12-03")).get().getValue(), is(BigDecimal.valueOf(0.3333333333)));
assertThat(inverse.lookupRate(LocalDate.parse("2014-12-04")).get().getValue(), is(BigDecimal.valueOf(0.3333333333)));
assertThat(inverse.getBaseCurrency(), is(source.getTermCurrency()));
assertThat(inverse.getTermCurrency(), is(source.getBaseCurrency()));
}
@Test
public void testIfNoRatesExist()
{
ExchangeRateTimeSeriesImpl source = new ExchangeRateTimeSeriesImpl();
InverseExchangeRateTimeSeries inverse = new InverseExchangeRateTimeSeries(source);
assertThat(inverse.lookupRate(LocalDate.parse("2014-11-30")).isPresent(), is(false));
}
}