/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.timeseries.date.localdate; import static org.testng.AssertJUnit.assertEquals; import java.util.AbstractMap; import java.util.HashMap; import java.util.List; import java.util.Map; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import com.opengamma.timeseries.DoubleTimeSeries; import com.opengamma.timeseries.date.DateDoubleTimeSeries; /** * Test. */ @Test(groups = "unit") public class ImmutableLocalDateDoubleTimeSeriesTest extends LocalDateDoubleTimeSeriesTest { @Override protected LocalDateDoubleTimeSeries createEmptyTimeSeries() { return ImmutableLocalDateDoubleTimeSeries.EMPTY_SERIES; } protected LocalDateDoubleTimeSeries createStandardTimeSeries() { return (LocalDateDoubleTimeSeries) super.createStandardTimeSeries(); } protected LocalDateDoubleTimeSeries createStandardTimeSeries2() { return (LocalDateDoubleTimeSeries) super.createStandardTimeSeries2(); } @Override protected LocalDateDoubleTimeSeries createTimeSeries(LocalDate[] times, double[] values) { return ImmutableLocalDateDoubleTimeSeries.of(times, values); } @Override protected LocalDateDoubleTimeSeries createTimeSeries(List<LocalDate> times, List<Double> values) { return ImmutableLocalDateDoubleTimeSeries.of(times, values); } @Override protected LocalDateDoubleTimeSeries createTimeSeries(DoubleTimeSeries<LocalDate> dts) { return ImmutableLocalDateDoubleTimeSeries.from(dts); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- public void test_of_LD_double() { LocalDateDoubleTimeSeries ts= ImmutableLocalDateDoubleTimeSeries.of(LocalDate.of(2012, 6, 30), 2.0); assertEquals(ts.size(), 1); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LD_double_null() { ImmutableLocalDateDoubleTimeSeries.of((LocalDate) null, 2.0); } //------------------------------------------------------------------------- public void test_of_LDArray_DoubleArray() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Double[] inValues = new Double[] {2.0, 3.0}; LocalDateDoubleTimeSeries ts= ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); assertEquals(ts.size(), 2); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0); assertEquals(ts.getTimeAtIndex(1), LocalDate.of(2012, 7, 1)); assertEquals(ts.getValueAtIndex(1), 3.0); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_DoubleArray_wrongOrder() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; Double[] inValues = new Double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_DoubleArray_mismatchedArrays() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30)}; Double[] inValues = new Double[] {2.0, 3.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_DoubleArray_nullDates() { Double[] inValues = new Double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of((LocalDate[]) null, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_DoubleArray_nullValues() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; ImmutableLocalDateDoubleTimeSeries.of(inDates, (Double[]) null); } //------------------------------------------------------------------------- public void test_of_LDArray_doubleArray() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] inValues = new double[] {2.0, 3.0}; LocalDateDoubleTimeSeries ts= ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); assertEquals(ts.size(), 2); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0); assertEquals(ts.getTimeAtIndex(1), LocalDate.of(2012, 7, 1)); assertEquals(ts.getValueAtIndex(1), 3.0); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_doubleArray_wrongOrder() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; double[] inValues = new double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_doubleArray_mismatchedArrays() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30)}; double[] inValues = new double[] {2.0, 3.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_doubleArray_nullDates() { double[] inValues = new double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of((LocalDate[]) null, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_doubleArray_nullValues() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; ImmutableLocalDateDoubleTimeSeries.of(inDates, (double[]) null); } //------------------------------------------------------------------------- public void test_of_intArray_doubleArray() { int[] inDates = new int[] {20120630, 20120701}; double[] inValues = new double[] {2.0, 3.0}; LocalDateDoubleTimeSeries ts= ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); assertEquals(ts.size(), 2); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0); assertEquals(ts.getTimeAtIndex(1), LocalDate.of(2012, 7, 1)); assertEquals(ts.getValueAtIndex(1), 3.0); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_intArray_doubleArray_wrongOrder() { int[] inDates = new int[] {20120630, 20120701, 20120601}; double[] inValues = new double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_intArray_doubleArray_mismatchedArrays() { int[] inDates = new int[] {20120630}; double[] inValues = new double[] {2.0, 3.0}; ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_intArray_doubleArray_nullDates() { double[] inValues = new double[] {2.0, 3.0, 1.0}; ImmutableLocalDateDoubleTimeSeries.of((int[]) null, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_intArray_doubleArray_nullValues() { int[] inDates = new int[] {20120630, 20120701}; ImmutableLocalDateDoubleTimeSeries.of(inDates, (double[]) null); } //------------------------------------------------------------------------- @Test public void test_intersectionFirstValue_selectFirst() { final LocalDateDoubleTimeSeries dts = createStandardTimeSeries(); final LocalDateDoubleTimeSeries dts2 = createStandardTimeSeries2(); final LocalDateDoubleTimeSeries dts3 = ImmutableLocalDateDoubleTimeSeries.builder() .putAll(dts2).put(dts2.getEarliestTime(), -1.0).build(); final LocalDateDoubleTimeSeries result1 = dts.intersectionFirstValue(dts3); assertEquals(3, result1.size()); assertEquals(Double.valueOf(4.0), result1.getValueAtIndex(0)); assertEquals(Double.valueOf(5.0), result1.getValueAtIndex(1)); assertEquals(Double.valueOf(6.0), result1.getValueAtIndex(2)); assertEquals(dts.getTimeAtIndex(3), result1.getTimeAtIndex(0)); assertEquals(dts.getTimeAtIndex(4), result1.getTimeAtIndex(1)); assertEquals(dts.getTimeAtIndex(5), result1.getTimeAtIndex(2)); final LocalDateDoubleTimeSeries result2 = dts3.intersectionFirstValue(dts); assertEquals(3, result2.size()); assertEquals(Double.valueOf(-1.0), result2.getValueAtIndex(0)); assertEquals(Double.valueOf(5.0), result2.getValueAtIndex(1)); assertEquals(Double.valueOf(6.0), result2.getValueAtIndex(2)); assertEquals(dts.getTimeAtIndex(3), result2.getTimeAtIndex(0)); assertEquals(dts.getTimeAtIndex(4), result2.getTimeAtIndex(1)); assertEquals(dts.getTimeAtIndex(5), result2.getTimeAtIndex(2)); } @Test public void test_intersectionSecondValue_selectSecond() { final LocalDateDoubleTimeSeries dts = createStandardTimeSeries(); final LocalDateDoubleTimeSeries dts2 = createStandardTimeSeries2(); final LocalDateDoubleTimeSeries dts3 = ImmutableLocalDateDoubleTimeSeries.builder() .putAll(dts2).put(dts2.getEarliestTime(), -1.0).build(); final LocalDateDoubleTimeSeries result2 = dts.intersectionSecondValue(dts3); assertEquals(3, result2.size()); assertEquals(Double.valueOf(-1.0), result2.getValueAtIndex(0)); assertEquals(Double.valueOf(5.0), result2.getValueAtIndex(1)); assertEquals(Double.valueOf(6.0), result2.getValueAtIndex(2)); assertEquals(dts.getTimeAtIndex(3), result2.getTimeAtIndex(0)); assertEquals(dts.getTimeAtIndex(4), result2.getTimeAtIndex(1)); assertEquals(dts.getTimeAtIndex(5), result2.getTimeAtIndex(2)); final LocalDateDoubleTimeSeries result1 = dts3.intersectionSecondValue(dts); assertEquals(3, result1.size()); assertEquals(Double.valueOf(4.0), result1.getValueAtIndex(0)); assertEquals(Double.valueOf(5.0), result1.getValueAtIndex(1)); assertEquals(Double.valueOf(6.0), result1.getValueAtIndex(2)); assertEquals(dts.getTimeAtIndex(3), result1.getTimeAtIndex(0)); assertEquals(dts.getTimeAtIndex(4), result1.getTimeAtIndex(1)); assertEquals(dts.getTimeAtIndex(5), result1.getTimeAtIndex(2)); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDates_single() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .put(LocalDate.of(2010, 5, 8), 8d) .put(LocalDate.of(2010, 6, 8), 9d) .build(); final LocalDateDoubleTimeSeries singleMiddle = dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 3, 9)); assertEquals(1, singleMiddle.size()); assertEquals(LocalDate.of(2010, 3, 8), singleMiddle.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), singleMiddle.getValueAtIndex(0)); final LocalDateDoubleTimeSeries singleStart = dts.subSeries(LocalDate.of(2010, 2, 8), LocalDate.of(2010, 2, 9)); assertEquals(1, singleStart.size()); assertEquals(LocalDate.of(2010, 2, 8), singleStart.getTimeAtIndex(0)); assertEquals(Double.valueOf(2d), singleStart.getValueAtIndex(0)); final LocalDateDoubleTimeSeries singleEnd = dts.subSeries(LocalDate.of(2010, 6, 8), LocalDate.of(2010, 6, 9)); assertEquals(1, singleEnd.size()); assertEquals(LocalDate.of(2010, 6, 8), singleEnd.getTimeAtIndex(0)); assertEquals(Double.valueOf(9d), singleEnd.getValueAtIndex(0)); } public void test_subSeries_byLocalDates_empty() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub = dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 3, 8)); assertEquals(0, sub.size()); } public void test_subSeries_byLocalDates_range() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .put(LocalDate.of(2010, 5, 8), 8d) .put(LocalDate.of(2010, 6, 8), 9d) .build(); final LocalDateDoubleTimeSeries middle = dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 5, 9)); assertEquals(3, middle.size()); assertEquals(LocalDate.of(2010, 3, 8), middle.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), middle.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 4, 8), middle.getTimeAtIndex(1)); assertEquals(Double.valueOf(5d), middle.getValueAtIndex(1)); assertEquals(LocalDate.of(2010, 5, 8), middle.getTimeAtIndex(2)); assertEquals(Double.valueOf(8d), middle.getValueAtIndex(2)); final LocalDateDoubleTimeSeries fromStart = dts.subSeries(LocalDate.of(2010, 2, 8), LocalDate.of(2010, 4, 9)); assertEquals(3, fromStart.size()); assertEquals(LocalDate.of(2010, 2, 8), fromStart.getTimeAtIndex(0)); assertEquals(Double.valueOf(2d), fromStart.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 3, 8), fromStart.getTimeAtIndex(1)); assertEquals(Double.valueOf(3d), fromStart.getValueAtIndex(1)); assertEquals(LocalDate.of(2010, 4, 8), fromStart.getTimeAtIndex(2)); assertEquals(Double.valueOf(5d), fromStart.getValueAtIndex(2)); final LocalDateDoubleTimeSeries preStart = dts.subSeries(LocalDate.of(2010, 1, 8), LocalDate.of(2010, 3, 9)); assertEquals(2, preStart.size()); assertEquals(LocalDate.of(2010, 2, 8), preStart.getTimeAtIndex(0)); assertEquals(Double.valueOf(2d), preStart.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 3, 8), preStart.getTimeAtIndex(1)); assertEquals(Double.valueOf(3d), preStart.getValueAtIndex(1)); final LocalDateDoubleTimeSeries postEnd = dts.subSeries(LocalDate.of(2010, 5, 8), LocalDate.of(2010, 12, 9)); assertEquals(2, postEnd.size()); assertEquals(LocalDate.of(2010, 5, 8), postEnd.getTimeAtIndex(0)); assertEquals(Double.valueOf(8d), postEnd.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 6, 8), postEnd.getTimeAtIndex(1)); assertEquals(Double.valueOf(9d), postEnd.getValueAtIndex(1)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_subSeries_byLocalDates_badRange1() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .put(LocalDate.of(2010, 5, 8), 8d) .put(LocalDate.of(2010, 6, 8), 9d) .build(); dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 3, 7)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_subSeries_byLocalDates_badRange2() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .put(LocalDate.of(2010, 5, 8), 8d) .put(LocalDate.of(2010, 6, 8), 9d) .build(); dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 2, 7)); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDatesAndBooleans_trueTrue() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), true, LocalDate.of(2010, 3, 8), true); assertEquals(1, sub1.size()); assertEquals(LocalDate.of(2010, 3, 8), sub1.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub1.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_trueFalse() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), true, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub1.size()); final LocalDateDoubleTimeSeries sub2 = dts.subSeries(LocalDate.of(2010, 3, 8), true, LocalDate.of(2010, 3, 9), false); assertEquals(1, sub2.size()); assertEquals(LocalDate.of(2010, 3, 8), sub2.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub2.getValueAtIndex(0)); final LocalDateDoubleTimeSeries sub3 = dts.subSeries(LocalDate.of(2010, 3, 7), true, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub3.size()); } public void test_subSeries_byLocalDatesAndBooleans_falseTrue() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 8), true); assertEquals(0, sub1.size()); final LocalDateDoubleTimeSeries sub2 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 9), true); assertEquals(0, sub2.size()); final LocalDateDoubleTimeSeries sub3 = dts.subSeries(LocalDate.of(2010, 3, 7), false, LocalDate.of(2010, 3, 8), true); assertEquals(1, sub3.size()); assertEquals(LocalDate.of(2010, 3, 8), sub3.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub3.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_falseFalse() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub1.size()); final LocalDateDoubleTimeSeries sub2 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 9), false); assertEquals(0, sub2.size()); final LocalDateDoubleTimeSeries sub3 = dts.subSeries(LocalDate.of(2010, 3, 7), false, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub3.size()); final LocalDateDoubleTimeSeries sub4 = dts.subSeries(LocalDate.of(2010, 3, 7), false, LocalDate.of(2010, 3, 9), false); assertEquals(1, sub4.size()); assertEquals(LocalDate.of(2010, 3, 8), sub4.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub4.getValueAtIndex(0)); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDatesAndBooleans_maxSimple() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.of(2010, 4, 8), 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 9), true, LocalDate.MAX, false); assertEquals(1, sub1.size()); assertEquals(LocalDate.of(2010, 4, 8), sub1.getTimeAtIndex(0)); assertEquals(Double.valueOf(5d), sub1.getValueAtIndex(0)); final LocalDateDoubleTimeSeries sub2 = dts.subSeries(LocalDate.of(2010, 3, 9), true, LocalDate.MAX, true); assertEquals(1, sub2.size()); assertEquals(LocalDate.of(2010, 4, 8), sub2.getTimeAtIndex(0)); assertEquals(Double.valueOf(5d), sub2.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_maxComplex() { final LocalDateDoubleTimeSeries dts = ImmutableLocalDateDoubleTimeSeries.builder() .put(LocalDate.of(2010, 2, 8), 2d) .put(LocalDate.of(2010, 3, 8), 3d) .put(LocalDate.MAX, 5d) .build(); final LocalDateDoubleTimeSeries sub1 = dts.subSeries(LocalDate.of(2010, 3, 7), true, LocalDate.MAX, false); assertEquals(1, sub1.size()); assertEquals(LocalDate.of(2010, 3, 8), sub1.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub1.getValueAtIndex(0)); final LocalDateDoubleTimeSeries sub2 = dts.subSeries(LocalDate.of(2010, 3, 7), true, LocalDate.MAX, true); assertEquals(2, sub2.size()); assertEquals(LocalDate.of(2010, 3, 8), sub2.getTimeAtIndex(0)); assertEquals(Double.valueOf(3d), sub2.getValueAtIndex(0)); assertEquals(LocalDate.MAX, sub2.getTimeAtIndex(1)); assertEquals(Double.valueOf(5d), sub2.getValueAtIndex(1)); final LocalDateDoubleTimeSeries sub3 = dts.subSeries(LocalDate.MAX, true, LocalDate.MAX, true); assertEquals(1, sub3.size()); assertEquals(LocalDate.MAX, sub3.getTimeAtIndex(0)); assertEquals(Double.valueOf(5d), sub3.getValueAtIndex(0)); final LocalDateDoubleTimeSeries sub4 = dts.subSeries(LocalDate.MAX, false, LocalDate.MAX, true); assertEquals(0, sub4.size()); final LocalDateDoubleTimeSeries sub5 = dts.subSeries(LocalDate.MAX, true, LocalDate.MAX, false); assertEquals(0, sub5.size()); final LocalDateDoubleTimeSeries sub6 = dts.subSeries(LocalDate.MAX, false, LocalDate.MAX, false); assertEquals(0, sub6.size()); } //------------------------------------------------------------------------- public void test_toString() { LocalDateDoubleTimeSeries ts= ImmutableLocalDateDoubleTimeSeries.of(LocalDate.of(2012, 6, 30), 2.0); assertEquals("ImmutableLocalDateDoubleTimeSeries[(2012-06-30, 2.0)]", ts.toString()); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- public void test_builder_nothingAdded() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); assertEquals(0, bld.size()); assertEquals(ImmutableLocalDateDoubleTimeSeries.EMPTY_SERIES, bld.build()); } //------------------------------------------------------------------------- public void test_iterator() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 1), 1.0); LocalDateDoubleEntryIterator it = bld.iterator(); assertEquals(true, it.hasNext()); assertEquals(new AbstractMap.SimpleImmutableEntry<>(LocalDate.of(2012, 6, 1), 1.0d), it.next()); assertEquals(LocalDate.of(2012, 6, 1), it.currentTime()); assertEquals(20120601, it.currentTimeFast()); assertEquals(1.0d, it.currentValue()); assertEquals(1.0d, it.currentValueFast()); assertEquals(LocalDate.of(2012, 6, 30), it.nextTime()); assertEquals(LocalDate.of(2012, 7, 1), it.nextTime()); assertEquals(false, it.hasNext()); } public void test_iterator_empty() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); assertEquals(false, bld.iterator().hasNext()); } public void test_iterator_removeFirst() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 1), 1.0); LocalDateDoubleEntryIterator it = bld.iterator(); it.next(); it.remove(); assertEquals(2, bld.size()); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_iterator_removeMid() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 1), 1.0); LocalDateDoubleEntryIterator it = bld.iterator(); it.next(); it.next(); it.remove(); assertEquals(2, bld.size()); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_iterator_removeLast() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 1), 1.0); LocalDateDoubleEntryIterator it = bld.iterator(); it.next(); it.next(); it.next(); it.remove(); assertEquals(2, bld.size()); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30)}; double[] outValues = new double[] {1.0, 2.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_put_LD() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 1), 1.0); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_LD_alreadyThere() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0).put(LocalDate.of(2012, 7, 1), 3.0).put(LocalDate.of(2012, 6, 30), 1.0); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_put_int() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(20120630, 2.0).put(20120701, 3.0).put(20120601, 1.0); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_int_alreadyThere() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(20120630, 2.0).put(20120701, 3.0).put(20120630, 1.0); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_int_big() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] outDates = new int[600]; double[] outValues = new double[600]; LocalDate date = LocalDate.of(2012, 6, 30); for (int i = 0; i < 600; i++) { bld.put(date, i); outDates[i] = LocalDateToIntConverter.convertToInt(date); outValues[i] = i; date = date.plusDays(1); } assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_putAll_LD() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; double[] inValues = new double[] {2.0, 3.0, 1.0}; bld.putAll(inDates, inValues); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_builder_putAll_LD_mismatchedArrays() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] inValues = new double[] {2.0, 3.0, 1.0}; bld.putAll(inDates, inValues); } //------------------------------------------------------------------------- public void test_builder_putAll_int() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120630, 20120701, 20120601}; double[] inValues = new double[] {2.0, 3.0, 1.0}; bld.putAll(inDates, inValues); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_builder_putAll_int_mismatchedArrays() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120630, 20120701}; double[] inValues = new double[] {2.0, 3.0, 1.0}; bld.putAll(inDates, inValues); } //------------------------------------------------------------------------- public void test_builder_putAll_DDTS() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_putAll_DDTS_range_allNonEmptyBuilder() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.put(LocalDate.of(2012, 5, 1), 0.5).putAll(ddts, 0, 3); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 5, 1), LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {0.5, 1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_fromStart() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 0, 1); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1)}; double[] outValues = new double[] {1.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_toEnd() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 1, 3); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_empty() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.put(LocalDate.of(2012, 5, 1), 0.5).putAll(ddts, 1, 1); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 5, 1)}; double[] outValues = new double[] {0.5}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startInvalidLow() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, -1, 3); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startInvalidHigh() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 4, 2); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_endInvalidLow() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 1, -1); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_endInvalidHigh() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 3, 4); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startEndOrder() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; double[] inValues = new double[] {1.0, 2.0, 3.0}; DateDoubleTimeSeries<?> ddts = ImmutableLocalDateDoubleTimeSeries.of(inDates, inValues); bld.putAll(ddts, 3, 2); } //------------------------------------------------------------------------- public void test_builder_putAll_Map() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); Map<LocalDate, Double> map = new HashMap<>(); map.put(LocalDate.of(2012, 6, 30), 2.0d); map.put(LocalDate.of(2012, 7, 1), 3.0d); map.put(LocalDate.of(2012, 6, 1), 1.0d); bld.putAll(map); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; double[] outValues = new double[] {1.0, 2.0, 3.0}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_Map_empty() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); Map<LocalDate, Double> map = new HashMap<>(); bld.put(LocalDate.of(2012, 5, 1), 0.5).putAll(map); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 5, 1)}; double[] outValues = new double[] {0.5}; assertEquals(ImmutableLocalDateDoubleTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_clearEmpty() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.clear(); assertEquals(ImmutableLocalDateDoubleTimeSeries.EMPTY_SERIES, bld.build()); } public void test_builder_clearSomething() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); bld.put(20120630, 1.0).clear(); assertEquals(ImmutableLocalDateDoubleTimeSeries.EMPTY_SERIES, bld.build()); } //------------------------------------------------------------------------- public void test_builder_toString() { LocalDateDoubleTimeSeriesBuilder bld = ImmutableLocalDateDoubleTimeSeries.builder(); assertEquals("Builder[size=1]", bld.put(20120630, 1.0).toString()); } public void test_withValues() { int[] times = new int[] {10101, 10102, 10103, 10104}; double[] values = new double[] {0d, 1d, 2d, 3d}; LocalDateDoubleTimeSeries series = ImmutableLocalDateDoubleTimeSeries.of(times, values); assertEquals(2d, series.getValueAtIndex(2)); values[2] = 5; LocalDateDoubleTimeSeries series2 = series.withValues(values); assertEquals(5d, series2.getValueAtIndex(2)); } }