/** * * * <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)); }