/** * Regular usage scenario - item is passed through the processing chain, * return value of the of the last transformation is returned by the composite. */ @Test public void testTransform() throws Exception { Object item = new Object(); Object itemAfterFirstTransformation = new Object(); Object itemAfterSecondTransformation = new Object(); when(processor1.process(item)).thenReturn(itemAfterFirstTransformation); when(processor2.process(itemAfterFirstTransformation)).thenReturn(itemAfterSecondTransformation); assertSame(itemAfterSecondTransformation, composite.process(item)); }
@Test public void testFilteredItemInFirstProcessor() throws Exception{ Object item = new Object(); when(processor1.process(item)).thenReturn(null); Assert.assertEquals(null,composite.process(item)); } }
@Test public void testTransform() throws Exception { Object item = new Object(); Object itemAfterFirstTransformation = new Object(); Object itemAfterSecondTransformation = new Object(); CompositeItemProcessor<Object, Object> composite = new CompositeItemProcessorBuilder<>() .delegates(this.processors).build(); when(processor1.process(item)).thenReturn(itemAfterFirstTransformation); when(processor2.process(itemAfterFirstTransformation)).thenReturn(itemAfterSecondTransformation); assertSame(itemAfterSecondTransformation, composite.process(item)); }
@Test public void testTransformVarargs() throws Exception { Object item = new Object(); Object itemAfterFirstTransformation = new Object(); Object itemAfterSecondTransformation = new Object(); CompositeItemProcessor<Object, Object> composite = new CompositeItemProcessorBuilder<>() .delegates(this.processor1, this.processor2).build(); when(processor1.process(item)).thenReturn(itemAfterFirstTransformation); when(processor2.process(itemAfterFirstTransformation)).thenReturn(itemAfterSecondTransformation); assertSame(itemAfterSecondTransformation, composite.process(item)); }
/** * Test that the CompositeItemProcessor can work with generic types for the ItemProcessor delegates. */ @Test @SuppressWarnings({"unchecked", "serial"}) public void testItemProcessorGenerics() throws Exception { CompositeItemProcessor<String, String> composite = new CompositeItemProcessor<>(); final ItemProcessor<String, Integer> processor1 = mock(ItemProcessor.class); final ItemProcessor<Integer, String> processor2 = mock(ItemProcessor.class); composite.setDelegates(new ArrayList<ItemProcessor<?,?>>() {{ add(processor1); add(processor2); }}); composite.afterPropertiesSet(); when(processor1.process("input")).thenReturn(5); when(processor2.process(5)).thenReturn("output"); assertEquals("output", composite.process("input")); }