@Test
public void testTwoConditionsNoMatch() {

  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(false);
  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));
}