use of com.nextdoor.bender.operation.conditional.ConditionalOperation in project bender by Nextdoor.
the class ConditionalOperationTest method testTwoConditions.
@Test
public void testTwoConditions() {
List<Pair<FilterOperation, List<OperationProcessor>>> conditions = new ArrayList<Pair<FilterOperation, List<OperationProcessor>>>();
/*
* Case 1
*/
List<OperationProcessor> case1Ops = new ArrayList<OperationProcessor>();
DummyAppendOperationFactory pos = new DummyAppendOperationFactory();
DummyAppendOperationConfig posConf = new DummyAppendOperationConfig();
posConf.setAppendStr("+");
pos.setConf(posConf);
case1Ops.add(new OperationProcessor(pos));
FilterOperation case1Filter = new BasicFilterOperation(false);
conditions.add(new ImmutablePair<FilterOperation, List<OperationProcessor>>(case1Filter, case1Ops));
/*
* Case 2
*/
List<OperationProcessor> case2Ops = new ArrayList<OperationProcessor>();
DummyAppendOperationFactory neg = new DummyAppendOperationFactory();
DummyAppendOperationConfig negConf = new DummyAppendOperationConfig();
negConf.setAppendStr("-");
neg.setConf(negConf);
case2Ops.add(new OperationProcessor(neg));
FilterOperation case2Filter = new BasicFilterOperation(true);
conditions.add(new ImmutablePair<FilterOperation, List<OperationProcessor>>(case2Filter, case2Ops));
ConditionalOperation op = new ConditionalOperation(conditions, false);
/*
* Create thread that supplies input events
*/
Queue<InternalEvent> inputQueue = new Queue<InternalEvent>();
supply(2, inputQueue);
/*
* Process
*/
Stream<InternalEvent> input = inputQueue.stream();
Stream<InternalEvent> output = op.getOutputStream(input);
List<String> actual = output.map(m -> {
return m.getEventObj().getPayload().toString();
}).collect(Collectors.toList());
List<String> expected = Arrays.asList("0-", "1-");
assertEquals(2, actual.size());
assertTrue(expected.containsAll(actual));
}
Aggregations