@Test public void testSplitRuleResultsInNothing() throws Exception { Splitter splitterEmptyRule = new Splitter(new Expression() { @Override public <T> T evaluate(Exchange exchange, Class<T> type) { return null; }}, dest); Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitterEmptyRule.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(0, received.size()); }
@Test public void testProcess() throws Exception { Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitter.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("bla:blu", origExchange.getOut().getBody()); }
@Test public void testResetToDefaults() throws Exception { splitter.aggregate(null); Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitter.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("blu", origExchange.getOut().getBody()); }
@Test public void testSplitRuleWithNonIterableResult() throws Exception { Splitter splitterSimpleRule = new Splitter(new Expression() { @Override public <T> T evaluate(Exchange exchange, Class<T> type) { return type.cast("smurf:" + exchange.getIn().getBody()); }}, dest); Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitterSimpleRule.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(1, received.size()); assertEquals("smurf:bla,blu", getContent(received.get(0))); }
@Test public void testSplitRuleResultsInIterator() throws Exception { final List<String> results = Arrays.asList("bla", "blu"); Splitter splitterIteratorRule = new Splitter(new Expression() { @Override public <T> T evaluate(Exchange exchange, Class<T> type) { return type.cast(results.iterator()); }}, dest); Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); splitterIteratorRule.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("blu", origExchange.getOut().getBody()); }
@Test public void testSplitRuleWithArrayResult() throws Exception { Exchange origExchange = createTestExchange(); origExchange.getIn().setBody("bla,blu"); Splitter splitterWithArrayResult = new Splitter(new Expression() { @Override public <T> T evaluate(Exchange exchange, Class<T> type) { return type.cast(getContent(exchange).split(",")); }}, dest); splitterWithArrayResult.aggregate(new TestAggregationStrategy()); splitterWithArrayResult.process(origExchange); List<Exchange> received = dest.getReceived(); assertEquals(2, received.size()); assertEquals("bla", getContent(received.get(0))); assertEquals("blu", getContent(received.get(1))); assertEquals("bla:blu", origExchange.getOut().getBody()); }