/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.timeseries; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import org.threeten.bp.Month; import com.opengamma.timeseries.date.localdate.ImmutableLocalDateDoubleTimeSeries; import com.opengamma.timeseries.date.localdate.LocalDateDoubleTimeSeries; @Test(groups = "unit") public class BulkTimeSeriesOperationsTest { private static final LocalDate[] DATES1 = new LocalDate[] { LocalDate.of(2010, Month.FEBRUARY, 18), LocalDate.of(2010, Month.FEBRUARY, 19), LocalDate.of(2010, Month.FEBRUARY, 20), LocalDate.of(2010, Month.FEBRUARY, 21), LocalDate.of(2010, Month.FEBRUARY, 25), LocalDate.of(2010, Month.FEBRUARY, 26), LocalDate.of(2010, Month.FEBRUARY, 27), LocalDate.of(2010, Month.MARCH, 1), LocalDate.of(2010, Month.MARCH, 2), LocalDate.of(2010, Month.MARCH, 5), LocalDate.of(2010, Month.MARCH, 6), LocalDate.of(2010, Month.MARCH, 7) }; private static final double[] VALUES1 = { 18, 19, 20, 21, 25, 26, 27, 1, 2, 5, 6, 7 }; private static final LocalDate[] DATES2 = new LocalDate[] { LocalDate.of(2010, Month.FEBRUARY, 19), LocalDate.of(2010, Month.FEBRUARY, 20), LocalDate.of(2010, Month.FEBRUARY, 21), LocalDate.of(2010, Month.FEBRUARY, 22), LocalDate.of(2010, Month.FEBRUARY, 24), LocalDate.of(2010, Month.FEBRUARY, 25), LocalDate.of(2010, Month.FEBRUARY, 26), LocalDate.of(2010, Month.MARCH, 1), LocalDate.of(2010, Month.MARCH, 2), LocalDate.of(2010, Month.MARCH, 4), LocalDate.of(2010, Month.MARCH, 5), LocalDate.of(2010, Month.MARCH, 6), LocalDate.of(2010, Month.MARCH, 7) }; private static final double[] VALUES2 = { 19 * 2, 20 * 2, 21 * 2, 22 * 2, 24 * 2, 25 * 2, 26 * 2, 1 * 2, 2 * 2, 4 * 2, 5 * 2, 6 * 2, 7 * 2 }; private static final LocalDate[] DATES3 = new LocalDate[] { LocalDate.of(2010, Month.FEBRUARY, 16), LocalDate.of(2010, Month.FEBRUARY, 18), LocalDate.of(2010, Month.FEBRUARY, 20), LocalDate.of(2010, Month.FEBRUARY, 21), LocalDate.of(2010, Month.FEBRUARY, 25), LocalDate.of(2010, Month.FEBRUARY, 26), LocalDate.of(2010, Month.FEBRUARY, 27), LocalDate.of(2010, Month.MARCH, 1), LocalDate.of(2010, Month.MARCH, 2), LocalDate.of(2010, Month.MARCH, 3), LocalDate.of(2010, Month.MARCH, 4), LocalDate.of(2010, Month.MARCH, 6), LocalDate.of(2010, Month.MARCH, 8) }; private static final double[] VALUES3 = { 16 * 3, 18 * 3, 20 * 3, 21 * 3, 25 * 3, 26 * 3, 27 * 3, 1 * 3, 2 * 3, 3 * 3, 4 * 3, 6 * 3, 8 * 3 }; private static final LocalDate[] DATES4 = new LocalDate[] { LocalDate.of(2010, Month.FEBRUARY, 11), LocalDate.of(2010, Month.FEBRUARY, 20), LocalDate.of(2010, Month.FEBRUARY, 21), LocalDate.of(2010, Month.FEBRUARY, 25), LocalDate.of(2010, Month.FEBRUARY, 26), LocalDate.of(2010, Month.FEBRUARY, 27), LocalDate.of(2010, Month.MARCH, 2), LocalDate.of(2010, Month.MARCH, 5), LocalDate.of(2010, Month.MARCH, 6), LocalDate.of(2010, Month.MARCH, 7) }; private static final double[] VALUES4 = { 11 * 4, 20 * 4, 21 * 4, 25 * 4, 26 * 4, 27 * 4, 2 * 4, 5 * 4, 6 * 4, 7 * 4 }; private static final LocalDate[] RESULT = new LocalDate[] { LocalDate.of(2010, Month.FEBRUARY, 20), LocalDate.of(2010, Month.FEBRUARY, 21), LocalDate.of(2010, Month.FEBRUARY, 25), LocalDate.of(2010, Month.FEBRUARY, 26), LocalDate.of(2010, Month.MARCH, 2), LocalDate.of(2010, Month.MARCH, 6), }; public void testBulkIntersection() { LocalDateDoubleTimeSeries one = ImmutableLocalDateDoubleTimeSeries.of(DATES1, VALUES1); LocalDateDoubleTimeSeries two = ImmutableLocalDateDoubleTimeSeries.of(DATES2, VALUES2); LocalDateDoubleTimeSeries three = ImmutableLocalDateDoubleTimeSeries.of(DATES3, VALUES3); LocalDateDoubleTimeSeries four = ImmutableLocalDateDoubleTimeSeries.of(DATES4, VALUES4); LocalDateDoubleTimeSeries[] inputs = new LocalDateDoubleTimeSeries[] {one, two, three, four }; DoubleTimeSeries<LocalDate>[] intersection = BulkTimeSeriesOperations.intersection(inputs); for (int i = 0; i < intersection.length; i++) { LocalDate[] timesArray = intersection[i].timesArray(); assertEquals(Arrays.asList(RESULT), Arrays.asList(timesArray)); Double[] valuesArray = intersection[i].valuesArray(); // System.out.println(Arrays.toString(timesArray)); // System.out.println(Arrays.toString(valuesArray)); for (int j = 0; j < timesArray.length; j++) { // System.out.println("i+1 = " + (i + 1)); // System.out.println("timesArray[" + j + "].getDayOfMonth() = " + timesArray[j].getDayOfMonth()); // System.out.println("valuesArray[" + j + "] = " + valuesArray[j]); assertEquals((double) ((i + 1) * timesArray[j].getDayOfMonth()), (double) valuesArray[j], 1E-20); } } assertEquals(BulkTimeSeriesOperations.intersection(new LocalDateDoubleTimeSeries[] {one })[0], one); } }