public void test_mapDates() { List<Double> values = values(1, 2, 4, 5, 8); LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, values).build(); LocalDateDoubleTimeSeries test = base.mapDates(date -> date.plusYears(1)); ImmutableList<LocalDate> expectedDates = ImmutableList.of(date(2016, 1, 5), date(2016, 1, 6), date(2016, 1, 7), date(2016, 1, 8), date(2016, 1, 9)); LocalDateDoubleTimeSeries expected = LocalDateDoubleTimeSeries.builder().putAll(expectedDates, values).build(); assertEquals(test, expected); }
public void underOneWeekNoWeekend() { Map<LocalDate, Double> map = ImmutableMap.<LocalDate, Double>builder() .put(dt(2015, 1, 5), 12d) // Monday .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .put(dt(2015, 1, 8), 15d) .put(dt(2015, 1, 9), 16d) // Friday .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(map).build(); assertThat(ts.get(dt(2015, 1, 5))).hasValue(12d); assertThat(ts.get(dt(2015, 1, 9))).hasValue(16d); }
@Test(expectedExceptions = IllegalArgumentException.class) public void test_of_collectionCollection_valueCollectionWithNull() { Collection<LocalDate> dates = dates(DATE_2011_01_01, DATE_2012_01_01); Collection<Double> values = Arrays.asList(2d, null); LocalDateDoubleTimeSeries.builder().putAll(dates, values).build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void test_of_collectionCollection_dateCollectionWithNull() { Collection<LocalDate> dates = Arrays.asList(DATE_2011_01_01, null); Collection<Double> values = values(2d, 3d); LocalDateDoubleTimeSeries.builder().putAll(dates, values).build(); }
@DataProvider(name = "subSeries") public static Object[][] data_subSeries() { return new Object[][] { // start = end -> empty {DATE_2011_01_01, DATE_2011_01_01, new int[] {}}, // no overlap {date(2006, 1, 1), date(2009, 1, 1), new int[] {}}, // single point {DATE_2015_01_06, DATE_2015_01_07, new int[] {1}}, // include when start matches base, exclude when end matches base {DATE_2015_01_06, DATE_2015_01_08, new int[] {1, 2}}, // include when start matches base {DATE_2015_01_05, DATE_2015_01_09, new int[] {0, 1, 2, 3}}, // neither start nor end match {date(2014, 12, 31), date(2015, 2, 1), new int[] {0, 1, 2, 3, 4}}, }; }
@Test(expectedExceptions = IllegalArgumentException.class) public void test_of_collectionCollection_valueCollectionNull() { Collection<LocalDate> dates = dates(DATE_2011_01_01, DATE_2012_01_01); LocalDateDoubleTimeSeries.builder().putAll(dates, (double[]) null).build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void test_of_collectionCollection_dateCollectionNull() { Collection<Double> values = values(2d, 3d); LocalDateDoubleTimeSeries.builder().putAll(null, values).build(); }
@Test(expectedExceptions = IllegalArgumentException.class) public void test_subSeries_startAfterEnd() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, VALUES_1_WEEK).build(); base.subSeries(date(2011, 1, 2), DATE_2011_01_01); }
public void test_equals_similarSeriesAreEqual() { LocalDateDoubleTimeSeries series1 = LocalDateDoubleTimeSeries.of(DATE_2014_01_01, 1d); LocalDateDoubleTimeSeries series2 = LocalDateDoubleTimeSeries.builder().putAll(dates(DATE_2014_01_01), values(1d)).build(); assertEquals(series1.size(), 1); assertEquals(series1, series2); assertEquals(series1, series1); assertEquals(series1.hashCode(), series1.hashCode()); }
public void test_filter_byDate() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = base.filter((ld, v) -> ld.getMonthValue() != 6); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(10d)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(12d)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14d)); }
public void roundTrip() { Map<LocalDate, Double> in = ImmutableMap.<LocalDate, Double>builder() .put(dt(2015, 1, 1), 10d) // Thursday .put(dt(2015, 1, 2), 11d) // Friday .put(dt(2015, 1, 5), 12d) .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .put(dt(2015, 1, 8), 15d) // Thursday .put(dt(2015, 1, 9), 16d) // Friday .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(in).build(); Map<LocalDate, Double> out = ts.stream() .collect(Guavate.toImmutableMap(LocalDateDoublePoint::getDate, LocalDateDoublePoint::getValue)); assertThat(out).isEqualTo(in); }
public void test_mapValues_invertSeries() { List<Double> values = values(1, 2, 4, 5, 8); LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, values).build(); LocalDateDoubleTimeSeries test = base.mapValues(d -> 1 / d); List<Double> expectedValues = values(1, 0.5, 0.25, 0.2, 0.125); assertEquals(test, LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, expectedValues).build()); }
public void test_subSeries_picks_valid_dates() { LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder() .put(DATE_2015_01_02, 10) // Friday .put(DATE_2015_01_05, 11) // Mon .put(DATE_2015_01_06, 12) .put(DATE_2015_01_07, 13) .put(DATE_2015_01_08, 14) .put(DATE_2015_01_09, 15) // Fri .put(DATE_2015_01_12, 16) // Mon .build(); // Pick using weekend dates LocalDateDoubleTimeSeries subSeries = series.subSeries(DATE_2015_01_04, date(2015, 1, 10)); assertEquals(subSeries.size(), 5); assertEquals(subSeries.get(DATE_2015_01_02), OptionalDouble.empty()); assertEquals(subSeries.get(DATE_2015_01_04), OptionalDouble.empty()); assertEquals(subSeries.get(DATE_2015_01_05), OptionalDouble.of(11)); assertEquals(subSeries.get(DATE_2015_01_06), OptionalDouble.of(12)); assertEquals(subSeries.get(DATE_2015_01_07), OptionalDouble.of(13)); assertEquals(subSeries.get(DATE_2015_01_08), OptionalDouble.of(14)); assertEquals(subSeries.get(DATE_2015_01_09), OptionalDouble.of(15)); assertEquals(subSeries.get(DATE_2015_01_12), OptionalDouble.empty()); }
public void test_of_collectionCollection_datesUnordered() { Collection<LocalDate> dates = dates(DATE_2012_01_01, DATE_2011_01_01); Collection<Double> values = values(2d, 1d); LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder().putAll(dates, values).build(); assertEquals(series.get(DATE_2011_01_01), OptionalDouble.of(1d)); assertEquals(series.get(DATE_2012_01_01), OptionalDouble.of(2d)); }
public void test_filter_byDateAndValue() { List<LocalDate> dates = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_01, DATE_2014_01_01); LocalDateDoubleTimeSeries series = LocalDateDoubleTimeSeries.builder().putAll(dates, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = series.filter((ld, v) -> ld.getYear() >= 2012 && v % 2 == 0); assertEquals(test.size(), 2); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(12d)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14d)); }
public void underOneWeekWithWeekend() { Map<LocalDate, Double> map = ImmutableMap.<LocalDate, Double>builder() .put(dt(2015, 1, 1), 10d) // Thursday .put(dt(2015, 1, 2), 11d) // Friday .put(dt(2015, 1, 5), 12d) .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .put(dt(2015, 1, 8), 15d) // Thursday .put(dt(2015, 1, 9), 16d) // Friday .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(map).build(); assertThat(ts.get(dt(2015, 1, 1))).hasValue(10d); assertThat(ts.get(dt(2015, 1, 2))).hasValue(11d); assertThat(ts.get(dt(2015, 1, 5))).hasValue(12d); assertThat(ts.get(dt(2015, 1, 6))).hasValue(13d); assertThat(ts.get(dt(2015, 1, 7))).hasValue(14d); assertThat(ts.get(dt(2015, 1, 8))).hasValue(15d); assertThat(ts.get(dt(2015, 1, 9))).hasValue(16d); }
public void test_mapValues_multiplySeries() { LocalDateDoubleTimeSeries base = LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, VALUES_1_WEEK).build(); LocalDateDoubleTimeSeries test = base.mapValues(d -> d * 5); List<Double> expectedValues = values(50, 55, 60, 65, 70); assertEquals(test, LocalDateDoubleTimeSeries.builder().putAll(DATES_2015_1_WEEK, expectedValues).build()); }
public void test_intersection_withSomeMatchingElements2() { List<LocalDate> dates1 = dates(DATE_2010_01_01, DATE_2011_01_01, DATE_2012_01_01, DATE_2014_01_01, DATE_2015_06_01); List<Double> values1 = values(10, 11, 12, 13, 14); LocalDateDoubleTimeSeries series1 = LocalDateDoubleTimeSeries.builder().putAll(dates1, values1).build(); List<LocalDate> dates2 = dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_01_01, DATE_2014_01_01); List<Double> values2 = values(1.0, 1.1, 1.2, 1.3, 1.4); LocalDateDoubleTimeSeries series2 = LocalDateDoubleTimeSeries.builder().putAll(dates2, values2).build(); LocalDateDoubleTimeSeries test = series1.intersection(series2, Double::sum); assertEquals(test.size(), 3); assertEquals(test.get(DATE_2010_01_01), OptionalDouble.of(11.0)); assertEquals(test.get(DATE_2012_01_01), OptionalDouble.of(13.2)); assertEquals(test.get(DATE_2014_01_01), OptionalDouble.of(14.4)); }