{
Mock session = MuleTestUtils.getMockSession();
session.matchAndReturn("getFlowConstruct", getTestService());
session.matchAndReturn("setFlowConstruct", RouterTestUtils.getArgListCheckerFlowConstruct(), null);
OutboundEndpoint endpoint1 = getTestOutboundEndpoint("Test1endpoint", "test://endpointUri.1", null, new PayloadTypeFilter(Apple.class), null);
OutboundEndpoint endpoint2 = getTestOutboundEndpoint("Test2Endpoint", "test://endpointUri.2", null, new PayloadTypeFilter(Orange.class), null);
OutboundEndpoint endpoint3 = getTestOutboundEndpoint("Test3Endpoint", "test://endpointUri.3");
Mock mockendpoint1 = RouterTestUtils.getMockEndpoint(endpoint1);
Mock mockendpoint2 = RouterTestUtils.getMockEndpoint(endpoint2);
Mock mockendpoint3 = RouterTestUtils.getMockEndpoint(endpoint3);
ListMessageSplitter router = createObject(ListMessageSplitter.class);
router.setFilter(new PayloadTypeFilter(List.class));
router.addRoute((OutboundEndpoint) mockendpoint1.proxy());
router.addRoute((OutboundEndpoint) mockendpoint2.proxy());
router.addRoute((OutboundEndpoint) mockendpoint3.proxy());
List<Object> payload = new ArrayList<Object>();
payload.add(new Apple());
payload.add(new Apple());
payload.add(new Orange());
payload.add(new String());
MuleMessage message = new DefaultMuleMessage(payload, muleContext);
assertTrue(router.isMatch(message));
mockendpoint1.expect("process", RouterTestUtils.getArgListCheckerMuleEvent());
mockendpoint1.expect("process", RouterTestUtils.getArgListCheckerMuleEvent());
mockendpoint2.expect("process", RouterTestUtils.getArgListCheckerMuleEvent());
mockendpoint3.expect("process", RouterTestUtils.getArgListCheckerMuleEvent());
router.route(new OutboundRoutingTestEvent(message, (MuleSession) session.proxy(), muleContext));
mockendpoint1.verify();
mockendpoint2.verify();
mockendpoint3.verify();
endpoint1 = getTestOutboundEndpoint("Test1endpoint",
"test://endpointUri.1?exchangePattern=request-response", null,
new PayloadTypeFilter(Apple.class), null);
endpoint2 = getTestOutboundEndpoint("Test2Endpoint",
"test://endpointUri.2?exchangePattern=request-response", null,
new PayloadTypeFilter(Orange.class), null);
endpoint3 = getTestOutboundEndpoint("Test3Endpoint",
"test://endpointUri.3?exchangePattern=request-response");
mockendpoint1 = RouterTestUtils.getMockEndpoint(endpoint1);
mockendpoint2 = RouterTestUtils.getMockEndpoint(endpoint2);
mockendpoint3 = RouterTestUtils.getMockEndpoint(endpoint3);
router = createObject(ListMessageSplitter.class);
router.setFilter(new PayloadTypeFilter(List.class));
router.addRoute((OutboundEndpoint) mockendpoint1.proxy());
router.addRoute((OutboundEndpoint) mockendpoint2.proxy());
router.addRoute((OutboundEndpoint) mockendpoint3.proxy());
message = new DefaultMuleMessage(payload, muleContext);