/** * Returns the properly initialized {@link TimeFrameDataProcessor}. * * @param chainedProcessors * Processors that need to be chained to {@link TimeFrameDataProcessor}. * @return {@link TimeFrameDataProcessor} * @see {AbstractChainedDataProcessor} */ public TimeFrameDataProcessor getTimeFrameDataProcessor(Collection<AbstractDataProcessor> chainedProcessors) { List<AbstractDataProcessor> normalProcessors = new ArrayList<>(chainedProcessors); Date fromDate = getFromDate(); Date toDate = getToDate(); TimeFrameDataProcessor timeFrameDataProcessor = new TimeFrameDataProcessor(fromDate, toDate, normalProcessors); return timeFrameDataProcessor; }
/** * Test that {@link TimeFrameDataProcessor} only passed the data that belongs to the given time * frame. */ @Test public void testTimeframeProcessor() { DefaultData defaultData = mock(DefaultData.class); long time = 10000000; long past = time - 1000; long future = time + 1000; AbstractDataProcessor dataProcessor = mock(AbstractDataProcessor.class); List<AbstractDataProcessor> chainedProcessors = new ArrayList<>(); chainedProcessors.add(dataProcessor); TimeFrameDataProcessor timeFrameDataProcessor = new TimeFrameDataProcessor(new Date(past), new Date(future), chainedProcessors); assertThat(timeFrameDataProcessor.canBeProcessed(defaultData), is(true)); Mockito.when(defaultData.getTimeStamp()).thenReturn(new Timestamp(time)); timeFrameDataProcessor.process(defaultData); Mockito.when(defaultData.getTimeStamp()).thenReturn(new Timestamp(past)); timeFrameDataProcessor.process(defaultData); Mockito.when(defaultData.getTimeStamp()).thenReturn(new Timestamp(future)); timeFrameDataProcessor.process(defaultData); verify(dataProcessor, times(3)).process(defaultData); Mockito.when(defaultData.getTimeStamp()).thenReturn(new Timestamp(past - 1000)); timeFrameDataProcessor.process(defaultData); Mockito.when(defaultData.getTimeStamp()).thenReturn(new Timestamp(future + 1000)); timeFrameDataProcessor.process(defaultData); verify(dataProcessor, times(3)).process(defaultData); }