// -------------------------------------------------------------------------
  public void test_combineWith_intersectionWithNoMatchingElements() {
    LocalDateDoubleTimeSeries series1 =
        LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build();
    List<LocalDate> dates2 =
        dates(DATE_2010_06_01, DATE_2011_06_01, DATE_2012_06_01, DATE_2013_06_01, DATE_2014_06_01);
    LocalDateDoubleTimeSeries series2 =
        LocalDateDoubleTimeSeries.builder().putAll(dates2, VALUES_10_14).build();

    LocalDateDoubleTimeSeries test = series1.intersection(series2, Double::sum);
    assertEquals(test, LocalDateDoubleTimeSeries.empty());
  }
  public void test_combineWith_intersectionWithSomeMatchingElements() {
    LocalDateDoubleTimeSeries series1 =
        LocalDateDoubleTimeSeries.builder().putAll(DATES_2010_14, VALUES_10_14).build();
    List<LocalDate> dates2 =
        dates(DATE_2010_01_01, DATE_2011_06_01, DATE_2012_01_01, DATE_2013_06_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(15.4));
  }
  public void test_combineWith_intersectionWithAllMatchingElements() {
    List<LocalDate> dates1 = DATES_2010_14;
    List<Double> values1 = values(10, 11, 12, 13, 14);
    LocalDateDoubleTimeSeries series1 =
        LocalDateDoubleTimeSeries.builder().putAll(dates1, values1).build();
    List<LocalDate> dates2 = DATES_2010_14;
    List<Double> values2 = values(1.0, 1.1, 1.2, 1.3, 1.4);
    LocalDateDoubleTimeSeries series2 =
        LocalDateDoubleTimeSeries.builder().putAll(dates2, values2).build();

    LocalDateDoubleTimeSeries combined = series1.intersection(series2, Double::sum);
    assertEquals(combined.size(), 5);
    assertEquals(combined.getEarliestDate(), DATE_2010_01_01);
    assertEquals(combined.getLatestDate(), DATE_2014_01_01);
    assertEquals(combined.get(DATE_2010_01_01), OptionalDouble.of(11.0));
    assertEquals(combined.get(DATE_2011_01_01), OptionalDouble.of(12.1));
    assertEquals(combined.get(DATE_2012_01_01), OptionalDouble.of(13.2));
    assertEquals(combined.get(DATE_2013_01_01), OptionalDouble.of(14.3));
    assertEquals(combined.get(DATE_2014_01_01), OptionalDouble.of(15.4));
  }