/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.timeseries.precise; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.fail; import java.math.BigDecimal; import org.testng.annotations.Test; import com.opengamma.timeseries.BigDecimalObjectTimeSeriesTest; /** * Abstract test class for {@code PreciseObjectTimeSeries}. * * @param <T> the time type */ @Test(groups = "unit") public abstract class PreciseObjectTimeSeriesTest<T> extends BigDecimalObjectTimeSeriesTest<T> { @Test public void test_intersectionFirstValue() { PreciseObjectTimeSeries<T, BigDecimal> dts = (PreciseObjectTimeSeries<T, BigDecimal>) createStandardTimeSeries(); PreciseObjectTimeSeries<T, BigDecimal> dts2 = (PreciseObjectTimeSeries<T, BigDecimal>) createStandardTimeSeries2(); PreciseObjectTimeSeries<T, BigDecimal> ets = (PreciseObjectTimeSeries<T, BigDecimal>) createEmptyTimeSeries(); assertEquals(ets, ets.intersectionFirstValue(dts)); assertEquals(ets, dts.intersectionFirstValue(ets)); PreciseObjectTimeSeries<T, BigDecimal> result = dts.intersectionFirstValue(dts2); assertEquals(3, result.size()); assertEquals(testValues()[3], result.getValueAtIndex(0)); assertEquals(testValues()[4], result.getValueAtIndex(1)); assertEquals(testValues()[5], result.getValueAtIndex(2)); assertEquals(dts.getTimeAtIndex(3), result.getTimeAtIndex(0)); assertEquals(dts.getTimeAtIndex(4), result.getTimeAtIndex(1)); assertEquals(dts.getTimeAtIndex(5), result.getTimeAtIndex(2)); } @Test public void test_noIntersectionOperation() { PreciseObjectTimeSeries<T, BigDecimal> dts = (PreciseObjectTimeSeries<T, BigDecimal>) createStandardTimeSeries(); PreciseObjectTimeSeries<T, BigDecimal> dts2 = (PreciseObjectTimeSeries<T, BigDecimal>) createStandardTimeSeries2(); PreciseObjectTimeSeries<T, BigDecimal> ets = (PreciseObjectTimeSeries<T, BigDecimal>) createEmptyTimeSeries(); assertEquals(dts, ets.noIntersectionOperation(dts)); assertEquals(dts, dts.noIntersectionOperation(ets)); try { dts.noIntersectionOperation(dts2); fail("Should have failed"); } catch (IllegalStateException ex) { //do nothing - expected exception because the two timeseries have overlapping dates which will require intersection operation } PreciseObjectTimeSeries<T, BigDecimal> dts3 = dts2.subSeries(dts.getLatestTime(), false, dts2.getLatestTime(), false); PreciseObjectTimeSeries<T, BigDecimal> noIntersecOp = dts.noIntersectionOperation(dts3); assertEquals(dts.getValueAtIndex(0), noIntersecOp.getValueAtIndex(0)); assertEquals(dts.getValueAtIndex(1), noIntersecOp.getValueAtIndex(1)); assertEquals(dts.getValueAtIndex(2), noIntersecOp.getValueAtIndex(2)); assertEquals(dts.getValueAtIndex(3), noIntersecOp.getValueAtIndex(3)); assertEquals(dts.getValueAtIndex(4), noIntersecOp.getValueAtIndex(4)); assertEquals(dts.getValueAtIndex(5), noIntersecOp.getValueAtIndex(5)); assertEquals(dts3.getValueAtIndex(0), noIntersecOp.getValueAtIndex(6)); assertEquals(dts3.getValueAtIndex(1), noIntersecOp.getValueAtIndex(7)); } }