Source:
public void testApplyStatefulWindowOperator() { final WindowImpl<Integer> window1 = new WindowImpl<>(0L, 100L); final WindowImpl<Integer> window2 = new WindowImpl<>(100L, 100L); window1.putData(new MistDataEvent(10, 10)); window1.putData(new MistDataEvent(20, 20)); window1.putData(new MistDataEvent(30, 30)); window1.putData(new MistDataEvent(15, 90)); window2.putData(new MistDataEvent(10, 110)); window2.putData(new MistDataEvent(20, 120)); final MistDataEvent dataEvent1 = new MistDataEvent(window1, 90L); final MistDataEvent dataEvent2 = new MistDataEvent(window2, 190L); final MistWatermarkEvent watermarkEvent = new MistWatermarkEvent(201L); final ApplyStatefulFunction<Integer, Integer> applyStatefulFunction = new FindMaxIntFunction(); final ApplyStatefulWindowOperator<Integer, Integer> applyStatefulWindowOperator = new ApplyStatefulWindowOperator<>(applyStatefulFunction); final List<MistEvent> result = new LinkedList<>(); applyStatefulWindowOperator.setOutputEmitter(new SimpleOutputEmitter(result)); applyStatefulWindowOperator.processLeftData(dataEvent1); Assert.assertEquals(1, result.size()); Assert.assertTrue(result.get(0).isData()); Assert.assertEquals(30, ((MistDataEvent)result.get(0)).getValue()); Assert.assertEquals(90L, result.get(0).getTimestamp()); applyStatefulWindowOperator.processLeftData(dataEvent2); Assert.assertEquals(2, result.size()); Assert.assertTrue(result.get(0).isData()); Assert.assertEquals(20, ((MistDataEvent)result.get(1)).getValue()); Assert.assertEquals(190L, result.get(1).getTimestamp()); applyStatefulWindowOperator.processLeftWatermark(watermarkEvent); Assert.assertEquals(3, result.size()); Assert.assertEquals(watermarkEvent, result.get(2)); }

Target:
public void testApplyStatefulWindowOperator() { final WindowImpl<Integer> window1 = new WindowImpl<>(0L, 100L); final WindowImpl<Integer> window2 = new WindowImpl<>(100L, 100L); window1.putData(new MistDataEvent(10, 10)); window1.putData(new MistDataEvent(20, 20)); window1.putData(new MistDataEvent(30, 30)); window1.putData(new MistDataEvent(15, 90)); window2.putData(new MistDataEvent(10, 110)); window2.putData(new MistDataEvent(20, 120)); final MistDataEvent dataEvent1 = new MistDataEvent(window1, 90L); final MistDataEvent dataEvent2 = new MistDataEvent(window2, 190L); final MistWatermarkEvent watermarkEvent = new MistWatermarkEvent(201L); final ApplyStatefulFunction<Integer, Integer> applyStatefulFunction = new FindMaxIntFunction(); final ApplyStatefulWindowOperator<Integer, Integer> applyStatefulWindowOperator = new ApplyStatefulWindowOperator<>(applyStatefulFunction); final List<MistEvent> result = new LinkedList<>(); applyStatefulWindowOperator.setOutputEmitter(new SimpleOutputEmitter(result)); applyStatefulWindowOperator.processLeftData(dataEvent1); Assert.assertEquals(1, result.size()); Assert.assertTrue(result.get(0).isData()); Assert.assertEquals(30, ((MistDataEvent)result.get(0)).getValue()); Assert.assertEquals(90L, result.get(0).getTimestamp()); applyStatefulWindowOperator.processLeftData(dataEvent2); Assert.assertEquals(2, result.size()); Assert.assertTrue(result.get(1).isData()); Assert.assertEquals(20, ((MistDataEvent)result.get(1)).getValue()); Assert.assertEquals(190L, result.get(1).getTimestamp()); applyStatefulWindowOperator.processLeftWatermark(watermarkEvent); Assert.assertEquals(3, result.size()); Assert.assertEquals(watermarkEvent, result.get(2)); }