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); }
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 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 checkOffsetsSkipWeekends() { Map<LocalDate, Double> map = ImmutableMap.<LocalDate, Double>builder() .put(dt(2014, 12, 26), 14d) // Weekend .put(dt(2014, 12, 29), 13d) .put(dt(2014, 12, 30), 12d) .put(dt(2014, 12, 31), 11d) // bank hol, so no data .put(dt(2015, 1, 2), 11d) // Weekend, so no data .put(dt(2015, 1, 5), 12d) .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(map).build(); assertThat(ts.get(dt(2014, 12, 26))).hasValue(14d); assertThat(ts.get(dt(2014, 12, 29))).hasValue(13d); assertThat(ts.get(dt(2014, 12, 30))).hasValue(12d); assertThat(ts.get(dt(2014, 12, 31))).hasValue(11d); assertThat(ts.get(dt(2015, 1, 1))).isEmpty(); assertThat(ts.get(dt(2015, 1, 2))).hasValue(11d); assertThat(ts.get(dt(2015, 1, 3))).isEmpty(); assertThat(ts.get(dt(2015, 1, 4))).isEmpty(); 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); }
public void partitionByValueSeries() { 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(); Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partitioned = ts.partitionByValue(d -> d < 12 || d > 15); LocalDateDoubleTimeSeries extreme = partitioned.getFirst(); LocalDateDoubleTimeSeries mid = partitioned.getSecond(); assertThat(extreme.size()).isEqualTo(3); assertThat(extreme.get(dt(2015, 1, 1))).hasValue(10d); assertThat(extreme.get(dt(2015, 1, 2))).hasValue(11d); assertThat(extreme.get(dt(2015, 1, 9))).hasValue(16d); assertThat(mid.size()).isEqualTo(4); assertThat(mid.get(dt(2015, 1, 5))).hasValue(12d); assertThat(mid.get(dt(2015, 1, 6))).hasValue(13d); assertThat(mid.get(dt(2015, 1, 7))).hasValue(14d); assertThat(mid.get(dt(2015, 1, 8))).hasValue(15d); }
public void partitionSeries() { 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(); Pair<LocalDateDoubleTimeSeries, LocalDateDoubleTimeSeries> partitioned = ts.partition((ld, d) -> ld.getDayOfMonth() % 2 == 0); LocalDateDoubleTimeSeries even = partitioned.getFirst(); LocalDateDoubleTimeSeries odd = partitioned.getSecond(); assertThat(even.size()).isEqualTo(3); assertThat(even.get(dt(2015, 1, 2))).hasValue(11d); assertThat(even.get(dt(2015, 1, 6))).hasValue(13d); assertThat(even.get(dt(2015, 1, 8))).hasValue(15d); assertThat(odd.size()).isEqualTo(4); assertThat(odd.get(dt(2015, 1, 1))).hasValue(10d); assertThat(odd.get(dt(2015, 1, 5))).hasValue(12d); assertThat(odd.get(dt(2015, 1, 7))).hasValue(14d); assertThat(odd.get(dt(2015, 1, 9))).hasValue(16d); }
public void checkOffsetsIncludeWeekends() { Map<LocalDate, Double> map = ImmutableMap.<LocalDate, Double>builder() .put(dt(2014, 12, 26), 14d) // Weekend .put(dt(2014, 12, 29), 13d) .put(dt(2014, 12, 30), 12d) .put(dt(2014, 12, 31), 11d) // 1st is bank hol so no data .put(dt(2015, 1, 2), 11d) // Weekend, so no data .put(dt(2015, 1, 5), 12d) .put(dt(2015, 1, 6), 13d) .put(dt(2015, 1, 7), 14d) .build(); LocalDateDoubleTimeSeries ts = LocalDateDoubleTimeSeries.builder().putAll(map).build(); assertThat(ts.get(dt(2014, 12, 26))).hasValue(14d); assertThat(ts.get(dt(2014, 12, 27))).isEmpty(); assertThat(ts.get(dt(2014, 12, 28))).isEmpty(); assertThat(ts.get(dt(2014, 12, 29))).hasValue(13d); assertThat(ts.get(dt(2014, 12, 30))).hasValue(12d); assertThat(ts.get(dt(2014, 12, 31))).hasValue(11d); assertThat(ts.get(dt(2015, 1, 1))).isEmpty(); assertThat(ts.get(dt(2015, 1, 2))).hasValue(11d); assertThat(ts.get(dt(2015, 1, 3))).isEmpty(); assertThat(ts.get(dt(2015, 1, 4))).isEmpty(); 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); }