@Override ConstraintImpl not() { // not (X and Y) == (not X) or (not Y) List<ConstraintImpl> list = newArrayList(); for (ConstraintImpl constraint : constraints) { list.add(new NotImpl(constraint)); } return new OrImpl(list).simplify(); }
@Override ConstraintImpl not() { // not (X and Y) == (not X) or (not Y) List<ConstraintImpl> list = newArrayList(); for (ConstraintImpl constraint : constraints) { list.add(new NotImpl(constraint)); } return new OrImpl(list).simplify(); }
@Override ConstraintImpl not() { // not (X and Y) == (not X) or (not Y) List<ConstraintImpl> list = newArrayList(); for (ConstraintImpl constraint : constraints) { list.add(new NotImpl(constraint)); } return new OrImpl(list).simplify(); }
@Test public void simplifyOr() { assertEquals(fooIsA, new OrImpl(fooIsA, fooIsA).simplify()); assertEquals(fooInAB, new OrImpl(fooIsA, fooIsB).simplify()); assertEquals(fooInBC, new OrImpl(fooIsB, fooIsC).simplify()); assertEquals(fooInABC, new OrImpl(fooInAB, fooIsC).simplify()); assertEquals(fooInABC, new OrImpl(fooIsA, fooInBC).simplify()); assertEquals(fooInABC, new OrImpl(fooInAB, fooInBC).simplify()); assertEquals(fooInABC, new OrImpl(fooIsA, fooInABC).simplify()); assertEquals(fooInABC, new OrImpl(fooIsA, new OrImpl(fooIsB, fooIsC)).simplify()); }