@Test
  public void testValidateFactPattern() throws Exception {

    model.addLhsItem(new FactPattern());

    assertTrue(validator.isValid());
    assertTrue(validator.getErrors().isEmpty());
  }
  @Test
  public void testValidateCompositeFactPatternFalse() throws Exception {
    CompositeFactPattern not = new CompositeFactPattern();
    not.setType("not");

    model.addLhsItem(not);

    assertFalse(validator.isValid());
    assertTrue(validator.getErrors().get(0).equals(MISSING_FACT_PATTERN));
  }
  @Test
  public void testValidateCompositeFactPatternTrue() throws Exception {
    CompositeFactPattern not = new CompositeFactPattern();
    not.setType("not");
    not.addFactPattern(new FactPattern());

    model.addLhsItem(not);

    assertTrue(validator.isValid());
    assertTrue(validator.getErrors().isEmpty());
  }
 private List<IPattern> cloneDefinition(List<IPattern> definition) {
   RuleModelCloneVisitor visitor = new RuleModelCloneVisitor();
   RuleModel rm = new RuleModel();
   for (IPattern pattern : definition) {
     rm.addLhsItem(pattern);
   }
   RuleModel rmClone = visitor.visitRuleModel(rm);
   List<IPattern> clone = new ArrayList<IPattern>();
   for (IPattern pattern : rmClone.lhs) {
     clone.add(pattern);
   }
   return clone;
 }