/** * 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.math.BigDecimal; 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.ObjectTimeSeries; import com.opengamma.timeseries.date.DateObjectTimeSeries; /** * Test. */ @Test(groups = "unit") public class ImmutableLocalDateObjectTimeSeriesTest extends LocalDateObjectTimeSeriesTest { @Override protected LocalDateObjectTimeSeries<BigDecimal> createEmptyTimeSeries() { return ImmutableLocalDateObjectTimeSeries.ofEmpty(); } protected LocalDateObjectTimeSeries<BigDecimal> createStandardTimeSeries() { return (LocalDateObjectTimeSeries<BigDecimal>) super.createStandardTimeSeries(); } protected LocalDateObjectTimeSeries<BigDecimal> createStandardTimeSeries2() { return (LocalDateObjectTimeSeries<BigDecimal>) super.createStandardTimeSeries2(); } @Override protected ObjectTimeSeries<LocalDate, BigDecimal> createTimeSeries(LocalDate[] times, BigDecimal[] values) { return ImmutableLocalDateObjectTimeSeries.of(times, values); } @Override protected LocalDateObjectTimeSeries<BigDecimal> createTimeSeries(List<LocalDate> times, List<BigDecimal> values) { return ImmutableLocalDateObjectTimeSeries.of(times, values); } @Override protected ObjectTimeSeries<LocalDate, BigDecimal> createTimeSeries(ObjectTimeSeries<LocalDate, BigDecimal> dts) { return ImmutableLocalDateObjectTimeSeries.from(dts); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- public void test_of_LD_value() { LocalDateObjectTimeSeries<Float> ts= ImmutableLocalDateObjectTimeSeries.of(LocalDate.of(2012, 6, 30), 2.0f); assertEquals(ts.size(), 1); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0f); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LD_double_null() { ImmutableLocalDateDoubleTimeSeries.of((LocalDate) null, 2.0); } //------------------------------------------------------------------------- public void test_of_LDArray_valueArray() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] inValues = new Float[] {2.0f, 3.0f}; LocalDateObjectTimeSeries<Float> ts= ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); assertEquals(ts.size(), 2); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0f); assertEquals(ts.getTimeAtIndex(1), LocalDate.of(2012, 7, 1)); assertEquals(ts.getValueAtIndex(1), 3.0f); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_valueArray_wrongOrder() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_LDArray_valueArray_mismatchedArrays() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30)}; Float[] inValues = new Float[] {2.0f, 3.0f}; ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_valueArray_nullDates() { Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; ImmutableLocalDateObjectTimeSeries.of((LocalDate[]) null, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_LDArray_valueArray_nullValues() { LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; ImmutableLocalDateObjectTimeSeries.of(inDates, (Float[]) null); } //------------------------------------------------------------------------- public void test_of_intArray_valueArray() { int[] inDates = new int[] {20120630, 20120701}; Float[] inValues = new Float[] {2.0f, 3.0f}; LocalDateObjectTimeSeries<Float> ts= ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); assertEquals(ts.size(), 2); assertEquals(ts.getTimeAtIndex(0), LocalDate.of(2012, 6, 30)); assertEquals(ts.getValueAtIndex(0), 2.0f); assertEquals(ts.getTimeAtIndex(1), LocalDate.of(2012, 7, 1)); assertEquals(ts.getValueAtIndex(1), 3.0f); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_intArray_valueArray_wrongOrder() { int[] inDates = new int[] {20120630, 20120701, 20120601}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_of_intArray_valueArray_mismatchedArrays() { int[] inDates = new int[] {20120630}; Float[] inValues = new Float[] {2.0f, 3.0f}; ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_intArray_valueArray_nullDates() { Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; ImmutableLocalDateObjectTimeSeries.of((int[]) null, inValues); } @Test(expectedExceptions = NullPointerException.class) public void test_of_intArray_valueArray_nullValues() { int[] inDates = new int[] {20120630, 20120701}; ImmutableLocalDateObjectTimeSeries.of(inDates, (Float[]) null); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDates_single() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .put(LocalDate.of(2010, 5, 8), 8) .put(LocalDate.of(2010, 6, 8), 9) .build(); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), singleMiddle.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(2), singleStart.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(9), singleEnd.getValueAtIndex(0)); } public void test_subSeries_byLocalDates_empty() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> sub = dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 3, 8)); assertEquals(0, sub.size()); } public void test_subSeries_byLocalDates_range() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .put(LocalDate.of(2010, 5, 8), 8) .put(LocalDate.of(2010, 6, 8), 9) .build(); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), middle.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 4, 8), middle.getTimeAtIndex(1)); assertEquals(Integer.valueOf(5), middle.getValueAtIndex(1)); assertEquals(LocalDate.of(2010, 5, 8), middle.getTimeAtIndex(2)); assertEquals(Integer.valueOf(8), middle.getValueAtIndex(2)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(2), fromStart.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 3, 8), fromStart.getTimeAtIndex(1)); assertEquals(Integer.valueOf(3), fromStart.getValueAtIndex(1)); assertEquals(LocalDate.of(2010, 4, 8), fromStart.getTimeAtIndex(2)); assertEquals(Integer.valueOf(5), fromStart.getValueAtIndex(2)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(2), preStart.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 3, 8), preStart.getTimeAtIndex(1)); assertEquals(Integer.valueOf(3), preStart.getValueAtIndex(1)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(8), postEnd.getValueAtIndex(0)); assertEquals(LocalDate.of(2010, 6, 8), postEnd.getTimeAtIndex(1)); assertEquals(Integer.valueOf(9), postEnd.getValueAtIndex(1)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_subSeries_byLocalDates_badRange1() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .put(LocalDate.of(2010, 5, 8), 8) .put(LocalDate.of(2010, 6, 8), 9) .build(); dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 3, 7)); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_subSeries_byLocalDates_badRange2() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .put(LocalDate.of(2010, 5, 8), 8) .put(LocalDate.of(2010, 6, 8), 9) .build(); dts.subSeries(LocalDate.of(2010, 3, 8), LocalDate.of(2010, 2, 7)); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDatesAndBooleans_trueTrue() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub1.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_trueFalse() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), true, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub1.size()); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub2.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> 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 LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 8), true); assertEquals(0, sub1.size()); final LocalDateObjectTimeSeries<Integer> sub2 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 9), true); assertEquals(0, sub2.size()); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub3.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_falseFalse() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> sub1 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub1.size()); final LocalDateObjectTimeSeries<Integer> sub2 = dts.subSeries(LocalDate.of(2010, 3, 8), false, LocalDate.of(2010, 3, 9), false); assertEquals(0, sub2.size()); final LocalDateObjectTimeSeries<Integer> sub3 = dts.subSeries(LocalDate.of(2010, 3, 7), false, LocalDate.of(2010, 3, 8), false); assertEquals(0, sub3.size()); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub4.getValueAtIndex(0)); } //------------------------------------------------------------------------- public void test_subSeries_byLocalDatesAndBooleans_maxSimple() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.of(2010, 4, 8), 5) .build(); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(5), sub1.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(5), sub2.getValueAtIndex(0)); } public void test_subSeries_byLocalDatesAndBooleans_maxComplex() { final LocalDateObjectTimeSeries<Integer> dts = ImmutableLocalDateObjectTimeSeries.<Integer>builder() .put(LocalDate.of(2010, 2, 8), 2) .put(LocalDate.of(2010, 3, 8), 3) .put(LocalDate.MAX, 5) .build(); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub1.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> 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(Integer.valueOf(3), sub2.getValueAtIndex(0)); assertEquals(LocalDate.MAX, sub2.getTimeAtIndex(1)); assertEquals(Integer.valueOf(5), sub2.getValueAtIndex(1)); final LocalDateObjectTimeSeries<Integer> sub3 = dts.subSeries(LocalDate.MAX, true, LocalDate.MAX, true); assertEquals(1, sub3.size()); assertEquals(LocalDate.MAX, sub3.getTimeAtIndex(0)); assertEquals(Integer.valueOf(5), sub3.getValueAtIndex(0)); final LocalDateObjectTimeSeries<Integer> sub4 = dts.subSeries(LocalDate.MAX, false, LocalDate.MAX, true); assertEquals(0, sub4.size()); final LocalDateObjectTimeSeries<Integer> sub5 = dts.subSeries(LocalDate.MAX, true, LocalDate.MAX, false); assertEquals(0, sub5.size()); final LocalDateObjectTimeSeries<Integer> sub6 = dts.subSeries(LocalDate.MAX, false, LocalDate.MAX, false); assertEquals(0, sub6.size()); } //------------------------------------------------------------------------- public void test_toString() { LocalDateObjectTimeSeries<Float> ts= ImmutableLocalDateObjectTimeSeries.of(LocalDate.of(2012, 6, 30), 2.0f); assertEquals("ImmutableLocalDateObjectTimeSeries[(2012-06-30, 2.0)]", ts.toString()); } //------------------------------------------------------------------------- //------------------------------------------------------------------------- //------------------------------------------------------------------------- public void test_builder_nothingAdded() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); assertEquals(ImmutableLocalDateObjectTimeSeries.ofEmpty(), bld.build()); } //------------------------------------------------------------------------- public void test_iterator() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 1), 1.0f); LocalDateObjectEntryIterator<Float> it = bld.iterator(); assertEquals(true, it.hasNext()); assertEquals(new AbstractMap.SimpleImmutableEntry<>(LocalDate.of(2012, 6, 1), 1.0f), it.next()); assertEquals(LocalDate.of(2012, 6, 1), it.currentTime()); assertEquals(20120601, it.currentTimeFast()); assertEquals(1.0f, it.currentValue()); 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() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); assertEquals(false, bld.iterator().hasNext()); } public void test_iterator_removeFirst() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 1), 1.0f); LocalDateObjectEntryIterator<Float> 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)}; Float[] outValues = new Float[] {2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_iterator_removeMid() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 1), 1.0f); LocalDateObjectEntryIterator<Float> 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)}; Float[] outValues = new Float[] {1.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_iterator_removeLast() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 1), 1.0f); LocalDateObjectEntryIterator<Float> 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)}; Float[] outValues = new Float[] {1.0f, 2.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_put_LD() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 1), 1.0f); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_LD_alreadyThere() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(LocalDate.of(2012, 6, 30), 2.0f).put(LocalDate.of(2012, 7, 1), 3.0f).put(LocalDate.of(2012, 6, 30), 1.0f); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_put_int() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(20120630, 2.0f).put(20120701, 3.0f).put(20120601, 1.0f); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_int_alreadyThere() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(20120630, 2.0f).put(20120701, 3.0f).put(20120630, 1.0f); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_put_int_big() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] outDates = new int[600]; Float[] outValues = new Float[600]; for (int i = 0; i < 600; i++) { bld.put(20120630 + i, (float) i); outDates[i] = 20120630 + i; outValues[i] = (float) i; } assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_putAll_LD() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1), LocalDate.of(2012, 6, 1)}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; bld.putAll(inDates, inValues); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_builder_putAll_LD_mismatchedArrays() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); LocalDate[] inDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; bld.putAll(inDates, inValues); } //------------------------------------------------------------------------- public void test_builder_putAll_int() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120630, 20120701, 20120601}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; bld.putAll(inDates, inValues); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_builder_putAll_int_mismatchedArrays() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120630, 20120701}; Float[] inValues = new Float[] {2.0f, 3.0f, 1.0f}; bld.putAll(inDates, inValues); } //------------------------------------------------------------------------- public void test_builder_putAll_DDTS() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.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)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_putAll_DDTS_range_allNonEmptyBuilder() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.put(LocalDate.of(2012, 5, 1), 0.5f).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)}; Float[] outValues = new Float[] {0.5f, 1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_fromStart() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 0, 1); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1)}; Float[] outValues = new Float[] {1.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_toEnd() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 1, 3); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_DDTS_range_empty() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.put(LocalDate.of(2012, 5, 1), 0.5f).putAll(ddts, 1, 1); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 5, 1)}; Float[] outValues = new Float[] {0.5f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startInvalidLow() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, -1, 3); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startInvalidHigh() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 4, 2); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_endInvalidLow() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 1, -1); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_endInvalidHigh() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 3, 4); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void test_builder_putAll_DDTS_range_startEndOrder() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); int[] inDates = new int[] {20120601, 20120630, 20120701}; Float[] inValues = new Float[] {1.0f, 2.0f, 3.0f}; DateObjectTimeSeries<?, Float> ddts = ImmutableLocalDateObjectTimeSeries.of(inDates, inValues); bld.putAll(ddts, 3, 2); } //------------------------------------------------------------------------- public void test_builder_putAll_Map() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); Map<LocalDate, Float> map = new HashMap<>(); map.put(LocalDate.of(2012, 6, 30), 2.0f); map.put(LocalDate.of(2012, 7, 1), 3.0f); map.put(LocalDate.of(2012, 6, 1), 1.0f); bld.putAll(map); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 6, 1), LocalDate.of(2012, 6, 30), LocalDate.of(2012, 7, 1)}; Float[] outValues = new Float[] {1.0f, 2.0f, 3.0f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } public void test_builder_putAll_Map_empty() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); Map<LocalDate, Float> map = new HashMap<>(); bld.put(LocalDate.of(2012, 5, 1), 0.5f).putAll(map); LocalDate[] outDates = new LocalDate[] {LocalDate.of(2012, 5, 1)}; Float[] outValues = new Float[] {0.5f}; assertEquals(ImmutableLocalDateObjectTimeSeries.of(outDates, outValues), bld.build()); } //------------------------------------------------------------------------- public void test_builder_clearEmpty() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.clear(); assertEquals(ImmutableLocalDateObjectTimeSeries.ofEmpty(), bld.build()); } public void test_builder_clearSomething() { LocalDateObjectTimeSeriesBuilder<Float> bld = ImmutableLocalDateObjectTimeSeries.builder(); bld.put(20120630, 1.0f).clear(); assertEquals(ImmutableLocalDateObjectTimeSeries.ofEmpty(), bld.build()); } //------------------------------------------------------------------------- public void test_builder_toString() { LocalDateObjectTimeSeriesBuilder<BigDecimal> bld = ImmutableLocalDateObjectTimeSeries.builder(); assertEquals("Builder[size=1]", bld.put(20120630, BigDecimal.valueOf(1.0f)).toString()); } }