예제 #1
0
  /**
   *
   *
   * <pre>
   *             or
   *         /        \
   *       and         or
   *      /  \         / \
   * descr descr2 descr3 descr4
   * </pre>
   *
   * result:<br>
   * descr && descr2<br>
   * or<br>
   * descr3<br>
   * or<br>
   * descr4
   */
  @Test
  public void testAddOrAndOr() {
    Pattern pattern = VerifierComponentMockFactory.createPattern1();

    LiteralRestriction literalRestriction = LiteralRestriction.createRestriction(pattern, "");
    LiteralRestriction literalRestriction2 = LiteralRestriction.createRestriction(pattern, "");
    LiteralRestriction literalRestriction3 = LiteralRestriction.createRestriction(pattern, "");
    LiteralRestriction literalRestriction4 = LiteralRestriction.createRestriction(pattern, "");

    PatternSolver solver = new PatternSolver(pattern);

    solver.addOperator(OperatorDescrType.OR);
    solver.addOperator(OperatorDescrType.AND);
    solver.add(literalRestriction);
    solver.add(literalRestriction2);
    solver.end();
    solver.addOperator(OperatorDescrType.OR);
    solver.add(literalRestriction3);
    solver.add(literalRestriction4);
    solver.end();
    solver.end();

    List<Set<VerifierComponent>> list = solver.getPossibilityLists();
    assertEquals(3, list.size());

    assertEquals(2, list.get(0).size());
    assertTrue(list.get(0).contains(literalRestriction));
    assertTrue(list.get(0).contains(literalRestriction2));

    assertEquals(1, list.get(1).size());
    assertTrue(list.get(1).contains(literalRestriction3));

    assertEquals(1, list.get(2).size());
    assertTrue(list.get(2).contains(literalRestriction4));
  }