@Test
  public void testTransformMoreSegmentsThanValues() throws Exception {
    thrown.expect(ArrayLengthIsTooSmallException.class);
    thrown.expectMessage("3 is smaller than the minimum (8)");

    AdaptivePiecewiseConstantApproximation apca = new AdaptivePiecewiseConstantApproximation(4);
    double[] v = {1, 2, 3};

    apca.transform(v);
  }
  @Test
  public void testTransform() throws Exception {
    AdaptivePiecewiseConstantApproximation apca = new AdaptivePiecewiseConstantApproximation(3);
    double[] v = {1, 1, 4, 5, 1, 0, 1, 2, 1};

    MeanLastPair[] result = apca.transform(v);

    Assert.assertEquals(1, result[0].getMean(), TimeSeriesPrecision.EPSILON);
    Assert.assertEquals(2, result[0].getLast());
    Assert.assertEquals(4.5, result[1].getMean(), TimeSeriesPrecision.EPSILON);
    Assert.assertEquals(4, result[1].getLast());
    Assert.assertEquals(1, result[2].getMean(), TimeSeriesPrecision.EPSILON);
    Assert.assertEquals(8, result[2].getLast());
  }