/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.analytics.financial.timeseries.filter; import static org.testng.AssertJUnit.assertEquals; import java.util.Arrays; import org.testng.annotations.Test; import org.threeten.bp.LocalDate; import cern.jet.random.engine.MersenneTwister; import cern.jet.random.engine.MersenneTwister64; import cern.jet.random.engine.RandomEngine; import com.opengamma.timeseries.date.localdate.ImmutableLocalDateDoubleTimeSeries; import com.opengamma.timeseries.date.localdate.LocalDateDoubleTimeSeries; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class NegativeValueDoubleTimeSeriesFilterTest { private static final RandomEngine RANDOM = new MersenneTwister64(MersenneTwister.DEFAULT_SEED); private static final TimeSeriesFilter FILTER = new NegativeValueDoubleTimeSeriesFilter(); private static final LocalDateDoubleTimeSeries EMPTY_SERIES = ImmutableLocalDateDoubleTimeSeries.EMPTY_SERIES; @Test(expectedExceptions = IllegalArgumentException.class) public void testNullTS() { FILTER.evaluate((LocalDateDoubleTimeSeries) null); } @Test public void testEmptyTS() { final FilteredTimeSeries filtered = FILTER.evaluate(EMPTY_SERIES); assertEquals(filtered.getFilteredTS(), EMPTY_SERIES); assertEquals(filtered.getRejectedTS(), EMPTY_SERIES); } @Test public void test() { final int n = 100; final LocalDate[] dates = new LocalDate[n]; final double[] data = new double[n]; final LocalDate[] filteredDates = new LocalDate[n]; final double[] filteredData = new double[n]; final LocalDate[] rejectedDates = new LocalDate[n]; final double[] rejectedData = new double[n]; Double d; int j = 0, k = 0; for (int i = 0; i < n; i++) { d = RANDOM.nextDouble(); dates[i] = LocalDate.ofEpochDay(i); if (d < 0.25) { data[i] = -d; rejectedDates[k] = LocalDate.ofEpochDay(i); rejectedData[k++] = -d; } else { data[i] = d; filteredDates[j] = LocalDate.ofEpochDay(i); filteredData[j++] = d; } } final FilteredTimeSeries result = FILTER.evaluate(ImmutableLocalDateDoubleTimeSeries.of(dates, data)); assertEquals(result, new FilteredTimeSeries(ImmutableLocalDateDoubleTimeSeries.of(Arrays.copyOf(filteredDates, j), Arrays.copyOf(filteredData, j)), ImmutableLocalDateDoubleTimeSeries.of(Arrays.copyOf(rejectedDates, k), Arrays.copyOf(rejectedData, k)))); } }