/** * Add a constraint code to a logic expression, ANDed with any constraints already in the * expression, e.g. 'A OR B' + code C -> '(A OR B) AND C'. If the expression is null a new * expression is created. * @param logic an existing constraint logic * @param code the code to add * @return a new logic expression including the new code */ protected static LogicExpression addToConstraintLogic(LogicExpression logic, String code) { LogicExpression newLogic = logic; if (logic == null) { newLogic = new LogicExpression(code); } else { newLogic = new LogicExpression("(" + logic.toString() + ") AND " + code); } return newLogic; }
public void testSimpleBrackets() { new LogicExpression("(A and B)"); }
public void testParseSimple3() { new LogicExpression("A and B or C"); }
public void testParseSimple() { new LogicExpression("A and B"); }
public void testParseSimple2() { new LogicExpression("A and B and C"); }
public void testDoubleBrackets() { new LogicExpression("((A and B ))"); }
public void testInvalidNot() { try { fail("" + new LogicExpression("A not B")); } catch (IllegalArgumentException e) { } }
public void test4() { LogicExpression l = new LogicExpression("A and (B and C)"); assertEquals(new HashSet<String>(Arrays.asList("A", "B", "C")), l.getVariableNames()); assertEquals("A and B and C", l.toString()); assertEquals(Arrays.asList(new LogicExpression("A and C"), new LogicExpression("B")), l.split(Arrays.asList(Arrays.asList("A", "C"), Arrays.asList("B")))); }
public void test5() { LogicExpression l = new LogicExpression("A and (B or C)"); assertEquals(new HashSet<String>(Arrays.asList("A", "B", "C")), l.getVariableNames()); assertEquals("A and (B or C)", l.toString()); assertEquals(Arrays.asList(new LogicExpression("A"), new LogicExpression("B or C"), null), l.split(Arrays.asList(Arrays.asList("A"), Arrays.asList("B", "C"), empty))); assertEquals(new LogicExpression("A and (B or C)"), l.getSection(Arrays.asList("A", "B", "C"))); assertEquals(Arrays.asList(new LogicExpression("A and (B or C)")), l.split(Arrays.asList(Arrays.asList("A", "B", "C")))); assertTrue(l == l.validateForGroups(Arrays.asList(Arrays.asList("A", "B", "C")))); assertTrue(l == l.validateForGroups(Arrays.asList(Arrays.asList("A"), Arrays.asList("B", "C")))); assertEquals(new LogicExpression("A and B and C"), l.validateForGroups(Arrays.asList(Arrays.asList("A", "B"), Arrays.asList("C")))); }
public void test6() { LogicExpression l = new LogicExpression("A and (B or C and D)"); assertEquals(new HashSet<String>(Arrays.asList("A", "B", "C", "D")), l.getVariableNames()); assertEquals("A and (B or (C and D))", l.toString()); assertEquals(Arrays.asList(new LogicExpression("A"), new LogicExpression("B or (C and D)")), l.split(Arrays.asList(Arrays.asList("A"), Arrays.asList("B", "C", "D")))); try { l.split(Arrays.asList(Arrays.asList("A", "B", "C"), Arrays.asList("D"))); fail("Expected exception"); } catch (IllegalArgumentException e) { } }
public void testBrackets2() { LogicExpression l = new LogicExpression("A and (B or C)"); assertEquals("A and (B or C)", l.toString()); }
public void testBrackets1() { LogicExpression l = new LogicExpression("A and B or C"); assertEquals("(A and B) or C", l.toString()); }
public void testBrackets3() { LogicExpression l = new LogicExpression("(A and B) or C"); assertEquals("(A and B) or C", l.toString()); }
private void roundtrip(String expr) { assertEquals(expr, new LogicExpression(expr).toString()); }
public void test1() { LogicExpression l = new LogicExpression("A"); assertEquals(Collections.singleton("A"), l.getVariableNames()); assertEquals("A", l.toString()); assertEquals(Collections.singletonList(new LogicExpression("A")), l.split(Collections.singletonList(Collections.singletonList("A")))); assertEquals(new LogicExpression("A"), l.getSection(Arrays.asList("A"))); assertEquals(null, l.getSection(empty)); try { l.getSection(Arrays.asList("B")); fail("Expected exception"); } catch (IllegalArgumentException e) { } assertEquals(new LogicExpression("A"), l.validateForGroups(Arrays.asList(Arrays.asList("A")))); }
public void testRemoveFromConstraintLogic() throws Exception { LogicExpression l = new LogicExpression("A and B"); LogicExpression updated = MainHelper.removeFromConstraintLogic(l, "B"); assertEquals("A", updated.toString()); l = new LogicExpression("A and B"); updated = MainHelper.removeFromConstraintLogic(l, "A"); assertEquals("B", updated.toString()); l = new LogicExpression("(A and B) or (C and D)"); updated = MainHelper.removeFromConstraintLogic(l, "C"); assertEquals("(A and B) or D", updated.toString()); l = new LogicExpression("A"); assertNull(MainHelper.removeFromConstraintLogic(l, "A")); }
public void testRemoveVariables1() { LogicExpression l = new LogicExpression("(A or B) and (C or D)"); assertEquals(new HashSet<String>(Arrays.asList("A", "B", "C", "D")), l.getVariableNames()); assertEquals("(A or B) and (C or D)", l.toString()); l.removeAllVariablesExcept(Arrays.asList("C", "D")); assertEquals("C or D", l.toString()); }
public void testGetPartialString() { LogicExpression l = new LogicExpression("(A and B) or C"); assertEquals("(A and B)", l.getPartialString(Arrays.asList("A", "B"))); assertEquals("(A and B) or C", l.getPartialString(Arrays.asList("A", "C"))); assertEquals("C", l.getPartialString(Arrays.asList("C"))); LogicExpression l2 = new LogicExpression("A and B or C"); assertEquals("(A and B)", l2.getPartialString(Arrays.asList("A"))); assertEquals("(A and B) or C", l2.getPartialString(Arrays.asList("A", "C"))); assertEquals("C", l2.getPartialString(Arrays.asList("C"))); assertEquals("(A and B)", l2.getPartialString(Arrays.asList("A", "B"))); LogicExpression l3 = new LogicExpression("A and (B or C)"); assertEquals("A and (B or C)", l3.getPartialString(Arrays.asList("A", "B"))); assertEquals("A and (B or C)", l3.getPartialString(Arrays.asList("A", "C"))); assertEquals("(B or C)", l3.getPartialString(Arrays.asList("C"))); } }
public void testAddToConstraintLogic() throws Exception { LogicExpression l = new LogicExpression("A"); LogicExpression updated = MainHelper.addToConstraintLogic(l, "B"); assertEquals("A and B", updated.toString()); l = new LogicExpression("A and B"); updated = MainHelper.addToConstraintLogic(l, "C"); assertEquals("A and B and C", updated.toString()); l = new LogicExpression("(A or B) and (C or D)"); updated = MainHelper.addToConstraintLogic(l, "E"); assertEquals("(A or B) and (C or D) and E", updated.toString()); l = null; updated = MainHelper.addToConstraintLogic(l, "A"); assertEquals("A", updated.toString()); }
public void testRemoveVariables2() { LogicExpression l = new LogicExpression("(A or B) and (C or D)"); assertEquals(new HashSet<String>(Arrays.asList("A", "B", "C", "D")), l.getVariableNames()); assertEquals("(A or B) and (C or D)", l.toString()); l.removeVariable("A"); assertEquals("B and (C or D)", l.toString()); l.removeVariable("B"); assertEquals("C or D", l.toString()); }