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 ChainedExchangeRateTimeSeriesTest
{
@Test
public void testChainedLookupOfExchangeRate()
{
ExchangeRateTimeSeriesImpl first = new ExchangeRateTimeSeriesImpl(null, "EUR", "USD");
first.addRate(new ExchangeRate(LocalDate.parse("2014-12-01"), BigDecimal.valueOf(1)));
first.addRate(new ExchangeRate(LocalDate.parse("2014-12-02"), BigDecimal.valueOf(2)));
first.addRate(new ExchangeRate(LocalDate.parse("2014-12-03"), BigDecimal.valueOf(3)));
ExchangeRateTimeSeriesImpl second = new ExchangeRateTimeSeriesImpl(null, "USD", "CHF");
second.addRate(new ExchangeRate(LocalDate.parse("2014-12-01"), BigDecimal.valueOf(1)));
second.addRate(new ExchangeRate(LocalDate.parse("2014-12-02"), BigDecimal.valueOf(2)));
second.addRate(new ExchangeRate(LocalDate.parse("2014-12-03"), BigDecimal.valueOf(3)));
ChainedExchangeRateTimeSeries chained = new ChainedExchangeRateTimeSeries(first, second);
assertThat(chained.lookupRate(LocalDate.parse("2014-11-30")).get().getValue(), is(BigDecimal.valueOf(1)));
assertThat(chained.lookupRate(LocalDate.parse("2014-12-01")).get().getValue(), is(BigDecimal.valueOf(1)));
assertThat(chained.lookupRate(LocalDate.parse("2014-12-02")).get().getValue(), is(BigDecimal.valueOf(4)));
assertThat(chained.lookupRate(LocalDate.parse("2014-12-03")).get().getValue(), is(BigDecimal.valueOf(9)));
assertThat(chained.lookupRate(LocalDate.parse("2014-12-04")).get().getValue(), is(BigDecimal.valueOf(9)));
assertThat(chained.getBaseCurrency(), is("EUR"));
assertThat(chained.getTermCurrency(), is("CHF"));
}
@Test
public void testIfNoRatesExist()
{
ExchangeRateTimeSeriesImpl first = new ExchangeRateTimeSeriesImpl();
ExchangeRateTimeSeriesImpl second = new ExchangeRateTimeSeriesImpl();
ChainedExchangeRateTimeSeries chained = new ChainedExchangeRateTimeSeries(first, second);
assertThat(chained.lookupRate(LocalDate.parse("2014-11-30")).isPresent(), is(false));
}
@Test
public void testIfSomeRatesDoNotExist()
{
ExchangeRateTimeSeriesImpl first = new ExchangeRateTimeSeriesImpl();
first.addRate(new ExchangeRate(LocalDate.parse("2014-11-30"), BigDecimal.valueOf(1)));
ExchangeRateTimeSeriesImpl second = new ExchangeRateTimeSeriesImpl();
ChainedExchangeRateTimeSeries chained = new ChainedExchangeRateTimeSeries(first, second);
assertThat(chained.lookupRate(LocalDate.parse("2014-11-30")).isPresent(), is(false));
}
}