/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.loader.csv; import static com.opengamma.strata.collect.TestHelper.assertThrows; import static com.opengamma.strata.collect.TestHelper.coverPrivateConstructor; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import java.time.LocalDate; import java.util.Map; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; import com.opengamma.strata.basics.index.IborIndices; import com.opengamma.strata.collect.io.ResourceLocator; import com.opengamma.strata.collect.timeseries.LocalDateDoubleTimeSeries; import com.opengamma.strata.data.ObservableId; import com.opengamma.strata.market.observable.IndexQuoteId; /** * Test {@link FixingSeriesCsvLoader}. */ @Test public class FixingSeriesCsvLoaderTest { private static final IndexQuoteId ID_USD_LIBOR_3M = IndexQuoteId.of(IborIndices.USD_LIBOR_3M); private static final IndexQuoteId ID_USD_LIBOR_6M = IndexQuoteId.of(IborIndices.USD_LIBOR_6M); private static final ResourceLocator FIXING_SERIES_1 = ResourceLocator.of("classpath:com/opengamma/strata/loader/csv/fixings-1.csv"); private static final ResourceLocator FIXING_SERIES_2 = ResourceLocator.of("classpath:com/opengamma/strata/loader/csv/fixings-2.csv"); private static final ResourceLocator FIXING_SERIES_1_AND_2 = ResourceLocator.of("classpath:com/opengamma/strata/loader/csv/fixings-1-and-2.csv"); private static final ResourceLocator FIXING_SERIES_INVALID_DATE = ResourceLocator.of("classpath:com/opengamma/strata/loader/csv/fixings-invalid-date.csv"); //------------------------------------------------------------------------- public void test_single_series_single_file() { Map<ObservableId, LocalDateDoubleTimeSeries> ts = FixingSeriesCsvLoader.load( ImmutableList.of(FIXING_SERIES_1)); assertEquals(ts.size(), 1); assertTrue(ts.containsKey(ID_USD_LIBOR_3M)); assertLibor3mSeries(ts.get(ID_USD_LIBOR_3M)); } public void test_multiple_series_single_file() { Map<ObservableId, LocalDateDoubleTimeSeries> ts = FixingSeriesCsvLoader.load( ImmutableList.of(FIXING_SERIES_1_AND_2)); assertLibor3m6mSeries(ts); } public void test_multiple_series_multiple_files() { Map<ObservableId, LocalDateDoubleTimeSeries> ts = FixingSeriesCsvLoader.load( FIXING_SERIES_1, FIXING_SERIES_2); assertLibor3m6mSeries(ts); } public void test_single_series_multiple_files() { assertThrows( () -> FixingSeriesCsvLoader.load(FIXING_SERIES_1, FIXING_SERIES_1), IllegalArgumentException.class, "Multiple entries with same key: .*"); } public void test_invalidDate() { assertThrows( () -> FixingSeriesCsvLoader.load(FIXING_SERIES_INVALID_DATE), IllegalArgumentException.class, "Error processing resource as CSV file: .*"); } //------------------------------------------------------------------------- private void assertLibor3m6mSeries(Map<ObservableId, LocalDateDoubleTimeSeries> ts) { assertEquals(ts.size(), 2); assertTrue(ts.containsKey(ID_USD_LIBOR_3M)); assertTrue(ts.containsKey(ID_USD_LIBOR_6M)); assertLibor3mSeries(ts.get(ID_USD_LIBOR_3M)); assertLibor6mSeries(ts.get(ID_USD_LIBOR_6M)); } private void assertLibor3mSeries(LocalDateDoubleTimeSeries actualSeries) { assertEquals(actualSeries.size(), 3); LocalDateDoubleTimeSeries expectedSeries = LocalDateDoubleTimeSeries.builder() .put(LocalDate.of(1971, 1, 4), 0.065) .put(LocalDate.of(1971, 1, 5), 0.0638) .put(LocalDate.of(1971, 1, 6), 0.0638) .build(); assertEquals(actualSeries, expectedSeries); } private void assertLibor6mSeries(LocalDateDoubleTimeSeries actualSeries) { assertEquals(actualSeries.size(), 3); LocalDateDoubleTimeSeries expectedSeries = LocalDateDoubleTimeSeries.builder() .put(LocalDate.of(1971, 1, 4), 0.0681) .put(LocalDate.of(1971, 1, 5), 0.0675) .put(LocalDate.of(1971, 1, 6), 0.0669) .build(); assertEquals(actualSeries, expectedSeries); } //------------------------------------------------------------------------- public void coverage() { coverPrivateConstructor(FixingSeriesCsvLoader.class); } }