[jboss-svn-commits] JBL Code SVN: r30433 - in labs/jbossrules/trunk/drools-verifier/src: main/java/org/drools/verifier/components and 19 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Dec 2 06:16:00 EST 2009
Author: Rikkola
Date: 2009-12-02 06:15:59 -0500 (Wed, 02 Dec 2009)
New Revision: 30433
Added:
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl
labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl
Removed:
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
Modified:
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
Log:
JBRULES-2359 : Better testing for subsumption, equal rules and redundancy -Also cleaned some of the codes
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/builder/VerifierImpl.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -27,12 +27,13 @@
*
* @author Toni Rikkola
*/
-class VerifierImpl
+public class VerifierImpl
implements
Verifier {
private KnowledgeBase verifierKnowledgeBase;
private StatefulKnowledgeSession ksession;
+
private final VerifierConfiguration conf;
private List<VerifierError> errors = new ArrayList<VerifierError>();
@@ -47,6 +48,10 @@
this.conf = new DefaultVerifierConfiguration();
}
+ public StatefulKnowledgeSession getKnowledgeSession() {
+ return ksession;
+ }
+
/*
* (non-Javadoc)
*
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Consequence.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -9,13 +9,19 @@
public static class ConsequenceType {
public static final ConsequenceType TEXT = new ConsequenceType( "TEXT" );
- protected String type;
+ public String type;
public ConsequenceType(String t) {
type = t;
}
+
+ public String toString() {
+ return type;
+ }
}
+ public String getGuid();
+
public ConsequenceType getConsequenceType();
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Pattern.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -15,7 +15,7 @@
private String objectTypeGuid;
private String name;
- private VerifierComponentType sourceType = VerifierComponentType.UNKNOWN;
+ private VerifierComponentType sourceType;
private String sourceGuid;
private boolean isPatternNot = false;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Possibility.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -12,7 +12,7 @@
extends
Cause {
- public Set<Cause> getItems();
+ public Set<? extends RuleComponent> getItems();
public int getAmountOfItems();
}
Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/Source.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,36 @@
+package org.drools.verifier.components;
+
+import org.drools.verifier.data.VerifierComponent;
+
+public abstract class Source extends VerifierComponent
+ implements
+ ChildComponent {
+
+ private VerifierComponentType parentType;
+ private String parentGuid;
+ private int orderNumber = 0;
+
+ public VerifierComponentType getParentType() {
+ return parentType;
+ }
+
+ public String getParentGuid() {
+ return parentGuid;
+ }
+
+ public int getOrderNumber() {
+ return orderNumber;
+ }
+
+ public void setParentType(VerifierComponentType parentType) {
+ this.parentType = parentType;
+ }
+
+ public void setParentGuid(String parentGuid) {
+ this.parentGuid = parentGuid;
+ }
+
+ public void setOrderNumber(int orderNumber) {
+ this.orderNumber = orderNumber;
+ }
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubPattern.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -3,7 +3,6 @@
import java.util.HashSet;
import java.util.Set;
-import org.drools.verifier.report.components.Cause;
import org.drools.verifier.report.components.CauseType;
/**
@@ -16,15 +15,53 @@
public class SubPattern extends PatternComponent
implements
Possibility {
- private static final long serialVersionUID = 8871361928380977116L;
+ private static final long serialVersionUID = 8871361928380977116L;
- private Set<Cause> items = new HashSet<Cause>();
+ private Pattern pattern;
+ private Set<PatternComponent> items = new HashSet<PatternComponent>();
+
+ public String getSourceGuid() {
+ return pattern.getSourceGuid();
+ }
+
+ public VerifierComponentType getSourceType() {
+ return pattern.getSourceType();
+ }
+
+ public String getName() {
+ return pattern.getName();
+ }
+
+ public String getObjectTypeGuid() {
+ return pattern.getObjectTypeGuid();
+ }
+
+ public boolean isPatternNot() {
+ return pattern.isPatternNot();
+ }
+
+ public boolean isPatternExists() {
+ return pattern.isPatternExists();
+ }
+
+ public boolean isPatternForall() {
+ return pattern.isPatternForall();
+ }
+
public CauseType getCauseType() {
- return CauseType.PATTERN_POSSIBILITY;
+ return CauseType.SUB_PATTERN;
}
- public Set<Cause> getItems() {
+ public void setPattern(Pattern pattern) {
+ this.pattern = pattern;
+ }
+
+ public Pattern getPattern() {
+ return pattern;
+ }
+
+ public Set<PatternComponent> getItems() {
return items;
}
@@ -42,7 +79,7 @@
}
public VerifierComponentType getVerifierComponentType() {
- return VerifierComponentType.PATTERN_POSSIBILITY;
+ return VerifierComponentType.SUB_PATTERN;
}
}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/SubRule.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -2,9 +2,10 @@
import java.io.Serializable;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
-import org.drools.verifier.report.components.Cause;
+import org.drools.verifier.components.Consequence.ConsequenceType;
import org.drools.verifier.report.components.CauseType;
/**
@@ -18,15 +19,17 @@
implements
Serializable,
Possibility {
- private static final long serialVersionUID = 8871361928380977116L;
+ private static final long serialVersionUID = 8871361928380977116L;
- private Set<Cause> items = new HashSet<Cause>();
+ private Set<RuleComponent> items = new HashSet<RuleComponent>();
+ private VerifierRule rule;
+
public CauseType getCauseType() {
- return CauseType.RULE_POSSIBILITY;
+ return CauseType.SUB_RULE;
}
- public Set<Cause> getItems() {
+ public Set<RuleComponent> getItems() {
return items;
}
@@ -38,12 +41,32 @@
items.add( patternPossibility );
}
+ public void setRule(VerifierRule rule) {
+ this.rule = rule;
+ }
+
+ public VerifierRule getRule() {
+ return rule;
+ }
+
+ public String getConsequenceGuid() {
+ return rule.getConsequenceGuid();
+ }
+
+ public ConsequenceType getConsequenceType() {
+ return rule.getConsequenceType();
+ }
+
+ public Map<String, String> getAttributes() {
+ return rule.getAttributes();
+ }
+
@Override
public String toString() {
return "RulePossibility from rule: " + getRuleName() + ", amount of items:" + items.size();
}
public VerifierComponentType getVerifierComponentType() {
- return VerifierComponentType.RULE_POSSIBILITY;
+ return VerifierComponentType.SUB_RULE;
}
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierAccumulateDescr.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
*
* @author Toni Rikkola
*/
-public class VerifierAccumulateDescr extends PatternComponent {
+public class VerifierAccumulateDescr extends Source {
private String inputPatternGuid;
private String initCode;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierCollectDescr.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
*
* @author Toni Rikkola
*/
-public class VerifierCollectDescr extends RuleComponent {
+public class VerifierCollectDescr extends Source {
private String insidePatternGuid;
private String classMethodName;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierComponentType.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -13,8 +13,8 @@
public static final VerifierComponentType CONSTRAINT = new VerifierComponentType( "CONSTRAINT" );
public static final VerifierComponentType VARIABLE = new VerifierComponentType( "VARIABLE" );
public static final VerifierComponentType PATTERN = new VerifierComponentType( "PATTERN" );
- public static final VerifierComponentType PATTERN_POSSIBILITY = new VerifierComponentType( "PATTERN_POSSIBILITY" );
- public static final VerifierComponentType RULE_POSSIBILITY = new VerifierComponentType( "RULE_POSSIBILITY" );
+ public static final VerifierComponentType SUB_PATTERN = new VerifierComponentType( "SUB_PATTERN" );
+ public static final VerifierComponentType SUB_RULE = new VerifierComponentType( "SUB_RULE" );
public static final VerifierComponentType RESTRICTION = new VerifierComponentType( "RESTRICTION" );
public static final VerifierComponentType OPERATOR = new VerifierComponentType( "OPERATOR" );
public static final VerifierComponentType FIELD_OBJECT_TYPE_LINK = new VerifierComponentType( "FIELD_CLASS_LINK" );
@@ -32,6 +32,8 @@
public static final VerifierComponentType OBJECT_TYPE = new VerifierComponentType( "OBJECT_TYPE" );
public static final VerifierComponentType INLINE_EVAL_DESCR = new VerifierComponentType( "INLINE_EVAL_DESCR" );
public static final VerifierComponentType RETURN_VALUE_FIELD_DESCR = new VerifierComponentType( "RETURN_VALUE_FIELD_DESCR" );
+ public static final VerifierComponentType ENTRY_POINT_DESCR = new VerifierComponentType( "ENTRY_POINT_DESCR" );
+ public static final VerifierComponentType WORKING_MEMORY = new VerifierComponentType( "WORKING_MEMORY" );
private final String type;
Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierEntryPointDescr.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package org.drools.verifier.components;
+
+
+public class VerifierEntryPointDescr extends Source {
+
+ private String entryId;
+
+ public VerifierComponentType getVerifierComponentType() {
+ return VerifierComponentType.ENTRY_POINT_DESCR;
+ }
+
+ public void setEntryId(String entryId) {
+ this.entryId = entryId;
+ }
+
+ public String getEntryId() {
+ return entryId;
+ }
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierFromDescr.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -4,7 +4,7 @@
*
* @author Toni Rikkola
*/
-public class VerifierFromDescr extends RuleComponent {
+public class VerifierFromDescr extends Source {
private VerifierComponentType dataSourceType;
private String dataSourceGuid;
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/VerifierRule.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,5 +1,9 @@
package org.drools.verifier.components;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.drools.verifier.components.Consequence.ConsequenceType;
import org.drools.verifier.report.components.Cause;
import org.drools.verifier.report.components.CauseType;
@@ -11,39 +15,40 @@
implements
Cause {
- private String ruleSalience;
- private String ruleAgendaGroup;
- private Consequence consequence;
- private int lineNumber;
+ private Map<String, String> attributes = new HashMap<String, String>();
- private int packageId;
+ private String consequenceGuid;
+ private ConsequenceType consequenceType;
+ private int lineNumber;
+ private int packageId;
+
public CauseType getCauseType() {
return CauseType.RULE;
}
- public String getRuleAgendaGroup() {
- return ruleAgendaGroup;
+ public void setAttributes(Map<String, String> attributes) {
+ this.attributes = attributes;
}
- public void setRuleAgendaGroup(String agendaGroup) {
- this.ruleAgendaGroup = agendaGroup;
+ public Map<String, String> getAttributes() {
+ return attributes;
}
- public String getRuleSalience() {
- return ruleSalience;
+ public String getConsequenceGuid() {
+ return consequenceGuid;
}
- public void setRuleSalience(String salience) {
- this.ruleSalience = salience;
+ public void setConsequenceGuid(String consequenceGuid) {
+ this.consequenceGuid = consequenceGuid;
}
- public Consequence getConsequence() {
- return consequence;
+ public ConsequenceType getConsequenceType() {
+ return consequenceType;
}
- public void setConsequence(Consequence consequence) {
- this.consequence = consequence;
+ public void setConsequenceType(ConsequenceType consequenceType) {
+ this.consequenceType = consequenceType;
}
public int getLineNumber() {
Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/components/WorkingMemory.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,9 @@
+package org.drools.verifier.components;
+
+public class WorkingMemory extends Source {
+
+ public VerifierComponentType getVerifierComponentType() {
+ return VerifierComponentType.WORKING_MEMORY;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierData.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -8,6 +8,7 @@
import org.drools.verifier.components.RulePackage;
import org.drools.verifier.components.Variable;
import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
import org.drools.verifier.components.VerifierRule;
/**
@@ -43,4 +44,6 @@
public Collection<ObjectType> getObjectTypesByRuleName(String ruleName);
+ public VerifierEntryPointDescr getEntryPointByEntryId(String entryId);
+
}
Added: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataKnowledgeSession.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,132 @@
+package org.drools.verifier.data;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
+import javax.net.ssl.KeyStoreBuilderParameters;
+
+import org.drools.ClassObjectFilter;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.definition.KnowledgePackage;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+import org.drools.verifier.components.Field;
+import org.drools.verifier.components.FieldObjectTypeLink;
+import org.drools.verifier.components.ObjectType;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.Variable;
+import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
+import org.drools.verifier.components.VerifierRule;
+
+/**
+ *
+ * @author Toni Rikkola
+ */
+class VerifierDataKnowledgeSession
+ implements
+ VerifierData {
+
+ private final KnowledgeBuilder kbuilder;
+ private final StatefulKnowledgeSession kSession;
+
+ public VerifierDataKnowledgeSession() {
+ this.kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+
+ // TODO: Add queries
+
+ if ( kbuilder.hasErrors() ) {
+ throw new RuntimeException( "Unable to compile queries." );
+ }
+
+ Collection<KnowledgePackage> pkgs = kbuilder.getKnowledgePackages();
+
+ final KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( pkgs );
+
+ this.kSession = kbase.newStatefulKnowledgeSession();
+ }
+
+ public Collection<ObjectType> getObjectTypesByRuleName(String ruleName) {
+ Collection<Object> list = kSession.getObjects( new ClassObjectFilter( Integer.class ) );
+ return new ArrayList( list );
+ }
+
+ public ObjectType getObjectTypeByName(String name) {
+ return null;
+ }
+
+ public Field getFieldByObjectTypeAndFieldName(String objectTypeName,
+ String fieldName) {
+ return null;
+ }
+
+ public Variable getVariableByRuleAndVariableName(String ruleName,
+ String variableName) {
+ return null;
+ }
+
+ public FieldObjectTypeLink getFieldObjectTypeLink(int id,
+ int id2) {
+ return null;
+ }
+
+ public Collection<VerifierComponent> getAll() {
+ Collection<Object> list = kSession.getObjects();
+
+ return new ArrayList( list );
+ }
+
+ public Collection<Field> getFieldsByObjectTypeId(String id) {
+ return null;
+ }
+
+ public Collection<VerifierRule> getRulesByObjectTypeId(String id) {
+ return null;
+ }
+
+ public Collection<VerifierRule> getRulesByFieldId(String id) {
+ return null;
+ }
+
+ public RulePackage getPackageByName(String name) {
+ return null;
+ }
+
+ public Collection<Restriction> getRestrictionsByFieldGuid(String id) {
+ return null;
+ }
+
+ public void add(VerifierComponent object) {
+ kSession.insert( object );
+ }
+
+ // public <T extends VerifierComponent> Collection<T> getAll(VerifierComponentType type) {
+ public Collection< ? extends VerifierComponent> getAll(VerifierComponentType type) {
+ return null;
+ }
+
+ // public <T extends VerifierComponent> T getVerifierObject(VerifierComponentType type,
+ // String guid) {
+ public VerifierComponent getVerifierObject(VerifierComponentType type,
+ String guid) {
+ return null;
+ }
+
+ public VerifierEntryPointDescr getEntryPointByEntryId(String entryId) {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/data/VerifierDataMaps.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -16,6 +16,7 @@
import org.drools.verifier.components.RulePackage;
import org.drools.verifier.components.Variable;
import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
import org.drools.verifier.components.VerifierRule;
/**
@@ -37,6 +38,7 @@
private DataTree<String, Pattern> patternsByRuleName = new DataTree<String, Pattern>();
private DataTree<String, Restriction> restrictionsByFieldId = new DataTree<String, Restriction>();
private Map<String, Variable> variablesByRuleAndVariableName = new TreeMap<String, Variable>();
+ private Map<String, VerifierEntryPointDescr> entryPointsByEntryId = new TreeMap<String, VerifierEntryPointDescr>();
public Collection<ObjectType> getObjectTypesByRuleName(String ruleName) {
Set<ObjectType> set = new HashSet<ObjectType>();
@@ -155,6 +157,10 @@
ObjectType objectType = (ObjectType) object;
objectTypesByName.put( objectType.getName(),
objectType );
+ } else if ( VerifierComponentType.ENTRY_POINT_DESCR.equals( object.getVerifierComponentType() ) ) {
+ VerifierEntryPointDescr entryPoint = (VerifierEntryPointDescr) object;
+ entryPointsByEntryId.put( entryPoint.getEntryId(),
+ entryPoint );
}
Map<String, VerifierComponent> map = all.get( object.getVerifierComponentType() );
@@ -181,4 +187,9 @@
String guid) {
return all.get( type ).get( guid );
}
+
+ public VerifierEntryPointDescr getEntryPointByEntryId(String entryId) {
+ return entryPointsByEntryId.get( entryId );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/PackageDescrVisitor.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -6,10 +6,12 @@
import org.drools.lang.descr.AccessorDescr;
import org.drools.lang.descr.AccumulateDescr;
import org.drools.lang.descr.AndDescr;
+import org.drools.lang.descr.AttributeDescr;
import org.drools.lang.descr.BaseDescr;
import org.drools.lang.descr.CollectDescr;
import org.drools.lang.descr.ConditionalElementDescr;
import org.drools.lang.descr.DeclarativeInvokerDescr;
+import org.drools.lang.descr.EntryPointDescr;
import org.drools.lang.descr.EvalDescr;
import org.drools.lang.descr.ExistsDescr;
import org.drools.lang.descr.FieldAccessDescr;
@@ -40,10 +42,11 @@
import org.drools.verifier.components.ObjectType;
import org.drools.verifier.components.OperatorDescr;
import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
import org.drools.verifier.components.QualifiedIdentifierRestriction;
import org.drools.verifier.components.ReturnValueRestriction;
import org.drools.verifier.components.RulePackage;
+import org.drools.verifier.components.Source;
+import org.drools.verifier.components.SubPattern;
import org.drools.verifier.components.SubRule;
import org.drools.verifier.components.TextConsequence;
import org.drools.verifier.components.Variable;
@@ -52,6 +55,7 @@
import org.drools.verifier.components.VerifierAccumulateDescr;
import org.drools.verifier.components.VerifierCollectDescr;
import org.drools.verifier.components.VerifierComponentType;
+import org.drools.verifier.components.VerifierEntryPointDescr;
import org.drools.verifier.components.VerifierEvalDescr;
import org.drools.verifier.components.VerifierFieldAccessDescr;
import org.drools.verifier.components.VerifierFromDescr;
@@ -59,6 +63,7 @@
import org.drools.verifier.components.VerifierMethodAccessDescr;
import org.drools.verifier.components.VerifierPredicateDescr;
import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.WorkingMemory;
import org.drools.verifier.data.VerifierComponent;
import org.drools.verifier.data.VerifierData;
import org.drools.verifier.solver.Solvers;
@@ -69,17 +74,19 @@
*/
public class PackageDescrVisitor {
- private Solvers solvers = new Solvers();
+ private Solvers solvers = new Solvers();
- private VerifierData data;
+ private VerifierData data;
- private RulePackage currentPackage = null;
- private VerifierRule currentRule = null;
- private Pattern currentPattern = null;
- private Constraint currentConstraint = null;
- private ObjectType currentObjectType = null;
- private Field currentField = null;
+ private RulePackage currentPackage = null;
+ private VerifierRule currentRule = null;
+ private Pattern currentPattern = null;
+ private Constraint currentConstraint = null;
+ private ObjectType currentObjectType = null;
+ private Field currentField = null;
+ private WorkingMemory workingMemory = null;
+
/**
* Adds packageDescr to given VerifierData object
*
@@ -176,14 +183,17 @@
}
}
- private VerifierComponent visit(PatternSourceDescr descr,
- VerifierComponent parent) throws UnknownDescriptionException {
+ private Source visit(PatternSourceDescr descr,
+ VerifierComponent parent) throws UnknownDescriptionException {
if ( descr instanceof AccumulateDescr ) {
return visit( (AccumulateDescr) descr,
parent );
} else if ( descr instanceof CollectDescr ) {
return visit( (CollectDescr) descr,
parent );
+ } else if ( descr instanceof EntryPointDescr ) {
+ return visit( (EntryPointDescr) descr,
+ parent );
} else if ( descr instanceof FromDescr ) {
return visit( (FromDescr) descr,
parent );
@@ -196,16 +206,20 @@
VerifierComponent parent) throws UnknownDescriptionException {
if ( descr instanceof AccessorDescr ) {
return visit( (AccessorDescr) descr,
- parent );
+ parent,
+ 0 );
} else if ( descr instanceof FieldAccessDescr ) {
return visit( (FieldAccessDescr) descr,
- parent );
+ parent,
+ 0 );
} else if ( descr instanceof FunctionCallDescr ) {
return visit( (FunctionCallDescr) descr,
- parent );
+ parent,
+ 0 );
} else if ( descr instanceof MethodAccessDescr ) {
return visit( (MethodAccessDescr) descr,
- parent );
+ parent,
+ 0 );
} else {
throw new UnknownDescriptionException( descr );
}
@@ -348,16 +362,48 @@
VerifierComponent parent) throws UnknownDescriptionException {
VerifierFromDescr from = new VerifierFromDescr();
- VerifierComponent ds = visit( descr.getDataSource(),
- from );
+ VerifierComponent ds = null;
+
+ if ( descr.getDataSource() instanceof AccessorDescr ) {
+ ds = visit( (AccessorDescr) descr.getDataSource(),
+ parent );
+ } else if ( descr.getDataSource() instanceof FieldAccessDescr ) {
+ ds = visit( (FieldAccessDescr) descr.getDataSource(),
+ parent );
+ } else if ( descr.getDataSource() instanceof FunctionCallDescr ) {
+ ds = visit( (FunctionCallDescr) descr.getDataSource(),
+ parent );
+ } else if ( descr.getDataSource() instanceof MethodAccessDescr ) {
+ ds = visit( (MethodAccessDescr) descr.getDataSource(),
+ parent );
+ }
+
from.setDataSourceGuid( ds.getGuid() );
from.setDataSourceType( ds.getVerifierComponentType() );
from.setParentGuid( parent.getGuid() );
from.setParentType( parent.getVerifierComponentType() );
+ data.add( from );
+
return from;
}
+ private VerifierEntryPointDescr visit(EntryPointDescr descr,
+ VerifierComponent parent) throws UnknownDescriptionException {
+ // Check if already exists
+ VerifierEntryPointDescr entryPoint = data.getEntryPointByEntryId( descr.getEntryId() );
+
+ if ( entryPoint == null ) {
+ entryPoint = new VerifierEntryPointDescr();
+
+ entryPoint.setEntryId( descr.getEntryId() );
+
+ data.add( entryPoint );
+ }
+
+ return entryPoint;
+ }
+
private VerifierAccumulateDescr visit(AccumulateDescr descr,
VerifierComponent parent) throws UnknownDescriptionException {
VerifierAccumulateDescr accumulate = new VerifierAccumulateDescr();
@@ -380,6 +426,8 @@
accumulate.setParentGuid( parent.getGuid() );
accumulate.setParentType( parent.getVerifierComponentType() );
+ data.add( accumulate );
+
return accumulate;
}
@@ -393,6 +441,8 @@
collect.setParentGuid( parent.getGuid() );
collect.setParentType( parent.getVerifierComponentType() );
+ data.add( collect );
+
return collect;
}
@@ -404,6 +454,9 @@
accessor.setParentGuid( parent.getGuid() );
accessor.setParentType( parent.getVerifierComponentType() );
// TODO: I wonder what this descr does.
+
+ data.add( accessor );
+
return accessor;
}
@@ -422,6 +475,8 @@
accessor.setParentGuid( parent.getGuid() );
accessor.setParentType( parent.getVerifierComponentType() );
+ data.add( accessor );
+
return accessor;
}
@@ -440,6 +495,8 @@
accessor.setParentGuid( parent.getGuid() );
accessor.setParentType( parent.getVerifierComponentType() );
+ data.add( accessor );
+
return accessor;
}
@@ -466,9 +523,16 @@
currentRule = rule;
rule.setRuleName( descr.getName() );
- rule.setRuleSalience( descr.getSalience() );
- rule.setConsequence( visitConsequence( rule,
- descr.getConsequence() ) );
+
+ for ( AttributeDescr attribute : descr.getAttributes().values() ) {
+ rule.getAttributes().put( attribute.getName(),
+ attribute.getValue() );
+ }
+
+ Consequence consequence = visitConsequence( rule,
+ descr.getConsequence() );
+ rule.setConsequenceGuid( consequence.getGuid() );
+ rule.setConsequenceType( consequence.getConsequenceType() );
rule.setLineNumber( descr.getLine() );
rule.setPackageGuid( currentPackage.getGuid() );
rule.setParentGuid( parent.getGuid() );
@@ -605,16 +669,21 @@
data.add( variable );
}
+ Source source;
// visit source.
if ( descr.getSource() != null ) {
- VerifierComponent source = visit( descr.getSource(),
- pattern );
- pattern.setSourceGuid( source.getGuid() );
- pattern.setSourceType( source.getVerifierComponentType() );
+ source = visit( descr.getSource(),
+ pattern );
} else {
- pattern.setSourceGuid( null );
- pattern.setSourceType( VerifierComponentType.UNKNOWN );
+ if ( workingMemory == null ) {
+ workingMemory = new WorkingMemory();
+ data.add( workingMemory );
+ }
+ source = workingMemory;
}
+ pattern.setSourceGuid( source.getGuid() );
+ pattern.setSourceType( source.getVerifierComponentType() );
+
solvers.startPatternSolver( pattern );
visit( descr.getConstraint(),
pattern,
@@ -916,11 +985,22 @@
private void formPossibilities() {
- for ( SubPattern possibility : solvers.getPatternPossibilities() ) {
- data.add( possibility );
+ for ( SubPattern subPattern : solvers.getPatternPossibilities() ) {
+ Pattern pattern = data.getVerifierObject( VerifierComponentType.PATTERN,
+ subPattern.getPatternGuid() );
+
+ subPattern.setPattern( pattern );
+
+ data.add( subPattern );
}
- for ( SubRule possibility : solvers.getRulePossibilities() ) {
- data.add( possibility );
+
+ for ( SubRule subRule : solvers.getRulePossibilities() ) {
+ VerifierRule rule = data.getVerifierObject( VerifierComponentType.RULE,
+ subRule.getRuleGuid() );
+
+ subRule.setRule( rule );
+
+ data.add( subRule );
}
}
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/misc/RuleLoader.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -54,10 +54,6 @@
resources.put( ResourceFactory.newClassPathResource( "alwaysFalse/Patterns.drl",
Verifier.class ),
ResourceType.DRL );
- // Equivalence
- resources.put( ResourceFactory.newClassPathResource( "equivalence/Rules.drl",
- Verifier.class ),
- ResourceType.DRL );
// Incoherence
resources.put( ResourceFactory.newClassPathResource( "incoherence/Patterns.drl",
Verifier.class ),
@@ -98,6 +94,9 @@
resources.put( ResourceFactory.newClassPathResource( "overlaps/Restrictions.drl",
Verifier.class ),
ResourceType.DRL );
+ resources.put( ResourceFactory.newClassPathResource( "overlaps/Restrictions.drl",
+ Verifier.class ),
+ ResourceType.DRL );
// Range checks
resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Clean.drl",
Verifier.class ),
@@ -111,30 +110,19 @@
resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Integers.drl",
Verifier.class ),
ResourceType.DRL );
- ResourceFactory.newClassPathResource( "rangeChecks/NumberPatterns.drl",
- Verifier.class );
- ResourceFactory.newClassPathResource( "rangeChecks/Variables.drl",
- Verifier.class );
+// resources.put( ResourceFactory.newClassPathResource( "rangeChecks/NumberPatterns.drl",
+// Verifier.class ),
+// ResourceType.DRL );
+// resources.put( ResourceFactory.newClassPathResource( "rangeChecks/Variables.drl",
+// Verifier.class ),
+// ResourceType.DRL );
// Redundancy
- resources.put( ResourceFactory.newClassPathResource( "redundancy/Consequence.drl",
+ resources.put( ResourceFactory.newClassPathResource( "redundancy/Redundancy.drl",
Verifier.class ),
ResourceType.DRL );
resources.put( ResourceFactory.newClassPathResource( "redundancy/Notes.drl",
Verifier.class ),
ResourceType.DRL );
- resources.put( ResourceFactory.newClassPathResource( "redundancy/Patterns.drl",
- Verifier.class ),
- ResourceType.DRL );
- resources.put( ResourceFactory.newClassPathResource( "redundancy/Possibilities.drl",
- Verifier.class ),
- ResourceType.DRL );
-
- resources.put( ResourceFactory.newClassPathResource( "redundancy/Restrictions.drl",
- Verifier.class ),
- ResourceType.DRL );
- resources.put( ResourceFactory.newClassPathResource( "redundancy/Rules.drl",
- Verifier.class ),
- ResourceType.DRL );
resources.put( ResourceFactory.newClassPathResource( "redundancy/Warnings.drl",
Verifier.class ),
ResourceType.DRL );
@@ -143,12 +131,18 @@
Verifier.class ),
ResourceType.DRL );
// Subsumption
- resources.put( ResourceFactory.newClassPathResource( "subsumption/Possibilities.drl",
+ resources.put( ResourceFactory.newClassPathResource( "subsumption/Consequences.drl",
Verifier.class ),
ResourceType.DRL );
resources.put( ResourceFactory.newClassPathResource( "subsumption/Restrictions.drl",
Verifier.class ),
ResourceType.DRL );
+ resources.put( ResourceFactory.newClassPathResource( "subsumption/SubPatterns.drl",
+ Verifier.class ),
+ ResourceType.DRL );
+ resources.put( ResourceFactory.newClassPathResource( "subsumption/SubRules.drl",
+ Verifier.class ),
+ ResourceType.DRL );
return resources;
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Cause.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,5 +1,6 @@
package org.drools.verifier.report.components;
+
/**
*
* @author Toni Rikkola
@@ -7,6 +8,6 @@
public interface Cause {
public String getGuid();
-
+
public CauseType getCauseType();
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/CauseType.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -2,27 +2,28 @@
public class CauseType {
- public static final CauseType RULE = new CauseType(0);
- public static final CauseType FIELD = new CauseType(1);
- public static final CauseType GAP = new CauseType(2);
- public static final CauseType PATTERN = new CauseType(3);
- public static final CauseType RESTRICTION = new CauseType(4);
- public static final CauseType PATTERN_POSSIBILITY = new CauseType(5);
- public static final CauseType RULE_POSSIBILITY = new CauseType(6);
- public static final CauseType RANGE_CHECK_CAUSE = new CauseType(7);
- public static final CauseType REDUNDANCY = new CauseType(8);
- public static final CauseType EVAL = new CauseType(9);
- public static final CauseType PREDICATE = new CauseType(10);
- public static final CauseType CONSTRAINT = new CauseType(11);
- public static final CauseType CONSEQUENCE = new CauseType(12);
- public static final CauseType SUBSUMPTION = new CauseType(13);
- public static final CauseType OPPOSITE = new CauseType(14);
- public static final CauseType INCOMPATIBLE = new CauseType(15);
- public static final CauseType ALWAYS_TRUE = new CauseType(16);
+ public static final CauseType RULE = new CauseType( "RULE" );
+ public static final CauseType FIELD = new CauseType( "FIELD" );
+ public static final CauseType GAP = new CauseType( "GAP" );
+ public static final CauseType PATTERN = new CauseType( "PATTERN" );
+ public static final CauseType RESTRICTION = new CauseType( "RESTRICTION" );
+ public static final CauseType SUB_PATTERN = new CauseType( "SUB_PATTERN" );
+ public static final CauseType SUB_RULE = new CauseType( "SUB_RULE" );
+ public static final CauseType SOURCE = new CauseType( "SOURCE" );
+ public static final CauseType RANGE_CHECK_CAUSE = new CauseType( "RANGE_CHECK_CAUSE" );
+ public static final CauseType REDUNDANCY = new CauseType( "REDUNDANCY" );
+ public static final CauseType EVAL = new CauseType( "EVAL" );
+ public static final CauseType PREDICATE = new CauseType( "PREDICATE" );
+ public static final CauseType CONSTRAINT = new CauseType( "CONSTRAINT" );
+ public static final CauseType CONSEQUENCE = new CauseType( "CONSEQUENCE" );
+ public static final CauseType SUBSUMPTION = new CauseType( "SUBSUMPTION" );
+ public static final CauseType OPPOSITE = new CauseType( "OPPOSITE" );
+ public static final CauseType INCOMPATIBLE = new CauseType( "INCOMPATIBLE" );
+ public static final CauseType ALWAYS_TRUE = new CauseType( "ALWAYS_TRUE" );
- public final int index;
+ public final String type;
- public CauseType(int i) {
- index = i;
- }
+ public CauseType(String type) {
+ this.type = type;
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/MessageType.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,22 +1,26 @@
package org.drools.verifier.report.components;
public class MessageType {
- public static final MessageType NOT_SPECIFIED = new MessageType(0);
- public static final MessageType RANGE_CHECK = new MessageType(1);
- public static final MessageType MISSING_EQUALITY = new MessageType(2);
- public static final MessageType REDUNDANCY = new MessageType(3);
- public static final MessageType SUBSUMPTION = new MessageType(4);
- public static final MessageType MISSING_COMPONENT = new MessageType(5);
- public static final MessageType OPTIMISATION = new MessageType(6);
- public static final MessageType INCOHERENCE = new MessageType(7);
- public static final MessageType OVERLAP = new MessageType(8);
- public static final MessageType ALWAYS_FALSE = new MessageType(9);
- public static final MessageType ALWAYS_TRUE = new MessageType(10);
+ public static final MessageType NOT_SPECIFIED = new MessageType( "NOT_SPECIFIED" );
+ public static final MessageType RANGE_CHECK = new MessageType( "RANGE_CHECK" );
+ public static final MessageType MISSING_EQUALITY = new MessageType( "MISSING_EQUALITY" );
+ public static final MessageType REDUNDANCY = new MessageType( "REDUNDANCY" );
+ public static final MessageType SUBSUMPTION = new MessageType( "SUBSUMPTION" );
+ public static final MessageType MISSING_COMPONENT = new MessageType( "MISSING_COMPONENT" );
+ public static final MessageType OPTIMISATION = new MessageType( "OPTIMISATION" );
+ public static final MessageType INCOHERENCE = new MessageType( "INCOHERENCE" );
+ public static final MessageType OVERLAP = new MessageType( "OVERLAP" );
+ public static final MessageType ALWAYS_FALSE = new MessageType( "ALWAYS_FALSE" );
+ public static final MessageType ALWAYS_TRUE = new MessageType( "ALWAYS_TRUE" );
+ public static final MessageType EQUIVALANCE = new MessageType( "EQUIVALANCE" );
- public final int index;
+ public final String type;
- public MessageType(int i) {
- index = i;
- }
+ public MessageType(String type) {
+ this.type = type;
+ }
+ public String toString() {
+ return type;
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/Redundancy.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,39 +1,48 @@
package org.drools.verifier.report.components;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+
/**
* Presents a redundancy between two Causes. The link between them can be WEAK
* or STRONG.
*
- * WEAK redundancy is for example two VerifierRules, but not theyr's rule
+ * WEAK redundancy is for example two VerifierRules, but not their rule
* possibilities. STRONG redundancy includes possibilities.
*
* @author Toni Rikkola
*/
-public class Redundancy extends Subsumption implements Cause {
- // By default the redundancy is weak.
- private final RedundancyType type;
+public class Redundancy
+ implements
+ Cause {
- public Redundancy(Cause left, Cause right) {
- super(left, right);
- type = RedundancyType.WEAK;
- }
+ private static int index = 0;
- public Redundancy(RedundancyType type, Cause left, Cause right) {
- super(left, right);
- this.type = type;
- }
+ private final String guid = String.valueOf( index++ );
- public CauseType getCauseType() {
- return CauseType.REDUNDANCY;
- }
+ private final List<Cause> items = new ArrayList<Cause>( 2 );
- public RedundancyType getType() {
- return type;
- }
+ public Redundancy(Cause first,
+ Cause second) {
+ items.add( first );
+ items.add( second );
+ }
- @Override
- public String toString() {
- return "Redundancy between: (" + getLeft() + ") and (" + getRight()
- + ").";
- }
+ public String getGuid() {
+ return guid;
+ }
+
+ public CauseType getCauseType() {
+ return CauseType.REDUNDANCY;
+ }
+
+ public List<Cause> getItems() {
+ return items;
+ }
+
+ @Override
+ public String toString() {
+ return "Redundancy between: (" + items.get( 0 ) + ") and (" + items.get( 1 ) + ").";
+ }
}
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/report/components/RedundancyType.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,13 +0,0 @@
-package org.drools.verifier.report.components;
-
-
-public class RedundancyType {
- public static final RedundancyType WEAK = new RedundancyType(0);
- public static final RedundancyType STRONG = new RedundancyType(0);
-
- public final int index;
-
- public RedundancyType(int i) {
- index = i;
- }
-}
Modified: labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/java/org/drools/verifier/solver/Solvers.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -18,11 +18,11 @@
*/
public class Solvers {
- private RuleSolver ruleSolver = null;
- private PatternSolver patternSolver = null;
+ private RuleSolver ruleSolver = null;
+ private PatternSolver patternSolver = null;
- private List<SubPattern> patternPossibilities = new ArrayList<SubPattern>();
- private List<SubRule> rulePossibilities = new ArrayList<SubRule>();
+ private List<SubPattern> subPatterns = new ArrayList<SubPattern>();
+ private List<SubRule> rulePossibilities = new ArrayList<SubRule>();
public void startRuleSolver(VerifierRule rule) {
ruleSolver = new RuleSolver( rule );
@@ -113,23 +113,37 @@
}
private void createPatternPossibilities() {
- for ( Set<VerifierComponent> list : patternSolver.getPossibilityLists() ) {
- SubPattern possibility = new SubPattern();
+ List<Set<VerifierComponent>> lists = patternSolver.getPossibilityLists();
+ if ( lists.size() == 0 ) {
+ SubPattern subPattern = newSubPattern();
- possibility.setRuleGuid( ruleSolver.getRule().getGuid() );
- possibility.setRuleName( ruleSolver.getRule().getRuleName() );
- possibility.setRuleGuid( ruleSolver.getRule().getGuid() );
- possibility.setPatternGuid( patternSolver.getPattern().getGuid() );
+ ruleSolver.add( subPattern );
+ subPatterns.add( subPattern );
+ } else {
- for ( VerifierComponent descr : list ) {
- possibility.add( (Restriction) descr );
+ for ( Set<VerifierComponent> list : lists ) {
+ SubPattern subPattern = newSubPattern();
+
+ for ( VerifierComponent descr : list ) {
+ subPattern.add( (Restriction) descr );
+ }
+
+ ruleSolver.add( subPattern );
+ subPatterns.add( subPattern );
}
-
- ruleSolver.add( possibility );
- patternPossibilities.add( possibility );
}
}
+ private SubPattern newSubPattern() {
+ SubPattern subPattern = new SubPattern();
+
+ subPattern.setRuleGuid( ruleSolver.getRule().getGuid() );
+ subPattern.setRuleName( ruleSolver.getRule().getRuleName() );
+ subPattern.setRuleGuid( ruleSolver.getRule().getGuid() );
+ subPattern.setPatternGuid( patternSolver.getPattern().getGuid() );
+ return subPattern;
+ }
+
private void createRulePossibilities() {
for ( Set<VerifierComponent> list : ruleSolver.getPossibilityLists() ) {
SubRule possibility = new SubRule();
@@ -148,11 +162,11 @@
}
public List<SubPattern> getPatternPossibilities() {
- return patternPossibilities;
+ return subPatterns;
}
public void setPatternPossibilities(List<SubPattern> patternPossibilities) {
- this.patternPossibilities = patternPossibilities;
+ this.subPatterns = patternPossibilities;
}
public List<SubRule> getRulePossibilities() {
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,36 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.equivalency.rules
-
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant rule specifications where consequences are not redundant,
-# does not include actual pattern and restriction checks.
-#
-# Dependencies: None
-#
-rule "Find equivalent Rules"
- when
- # Check that VerifierRule $left and $right have redundant fields.
- $left :VerifierRule()
- $right :VerifierRule(
- guid not matches $left.guid,
- ruleAgendaGroup == $left.ruleAgendaGroup
- )
-
- not Redundancy(
- left == $left.consequence,
- right == $right.consequence
- )
-
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- then
- insert( new Redundancy( RedundancyType.WEAK, $left, $right ) );
-end
-
Copied: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Rules.drl)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/equivalence/Warnings.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,92 @@
+#created on: 7.9.2007
+package org.drools.verifier.equivalency.rules
+
+#list any import classes here.
+global VerifierReport result;
+
+import java.util.ArrayList;
+import java.util.Collection;
+
+import org.drools.verifier.data.VerifierReport;
+
+import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.VerifierMessage;
+import org.drools.verifier.report.components.MessageType;
+
+#
+# Only checks for redundant rule specifications where consequences are not redundant,
+# does not include actual pattern and restriction checks.
+#
+# Dependencies: None
+#
+rule "Find equivalent Rules"
+ when
+ # Check that VerifierRule $left and $right have redundant fields.
+ $left :VerifierRule()
+
+ $right :VerifierRule(
+ guid != $left.guid
+ )
+
+
+ $leftSubRules : ArrayList()
+ from collect(
+ SubRule(
+ ruleGuid == $left.guid
+ )
+ )
+
+ $rightSubRules : ArrayList()
+ from collect(
+ SubRule(
+ ruleGuid == $right.guid
+ )
+ )
+
+ forall (
+ $subRule :SubRule(
+ ) from $leftSubRules
+
+ Subsumption(
+ left == $subRule,
+ right memberOf $rightSubRules
+ )
+ )
+ forall (
+ $subRule :SubRule(
+ ) from $rightSubRules
+
+ Subsumption(
+ left == $subRule,
+ right memberOf $leftSubRules
+ )
+ )
+
+ # RHS should not be redundant
+ $leftConsequence : Consequence(
+ guid == $left.consequenceGuid,
+ consequenceType == $left.consequenceType
+ )
+ $rightConsequence : Consequence(
+ guid == $right.consequenceGuid,
+ consequenceType == $right.consequenceType
+ )
+ not Redundancy(
+ items contains $leftConsequence,
+ items contains $rightConsequence
+ )
+ then
+ Collection causes = new ArrayList();
+ causes.add( $left );
+ causes.add( $right );
+
+ result.add(new VerifierMessage(
+ Severity.WARNING, MessageType.EQUIVALANCE,
+ $left, "Rule is equivalent to rule " + $right.getRuleName() + " ", causes ) );
+end
+
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Consequence.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,32 +0,0 @@
-#created on: 29.11.2007
-package org.drools.verifier.redundancy.consequences
-
-#list any import classes here.
-import org.drools.verifier.components.TextConsequence;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#declare any global variables here
-
-
-
-#
-# Dependencies: None
-#
-rule "Find redundant TextConsequences"
- when
- # Check that VerifierRule $left and $right have redundant fields.
- $left :TextConsequence()
- $right :TextConsequence(
- guid not matches $left.guid,
- text == $left.text
- )
-
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Notes.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -33,17 +33,16 @@
salience -100
when
$r :Redundancy(
- left.causeType == CauseType.RESTRICTION
+ items[0].causeType == CauseType.RESTRICTION
)
$pp :SubPattern(
- items contains $r.left,
- items contains $r.right
+ items contains $r.items[0],
+ items contains $r.items[1]
)
then
Collection causes = new ArrayList();
- causes.add( $r.getLeft() );
- causes.add( $r.getRight() );
+ causes.addAll( $r.getItems() );
result.add(new VerifierMessage(
Severity.NOTE, MessageType.REDUNDANCY,
@@ -60,17 +59,16 @@
salience -100
when
$r :Redundancy(
- left.causeType == CauseType.PATTERN_POSSIBILITY
+ items[0].causeType == CauseType.SUB_PATTERN
)
SubRule(
- items contains $r.left,
- items contains $r.right
+ items contains $r.items[0],
+ items contains $r.items[1]
)
then
Collection causes = new ArrayList();
- causes.add( $r.getLeft() );
- causes.add( $r.getRight() );
+ causes.addAll( $r.getItems() );
result.add(new VerifierMessage(
Severity.NOTE, MessageType.REDUNDANCY,
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Patterns.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,83 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.patterns
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant pattern specifications,
-# does not include actual restriction checks.
-#
-# Dependencies: None
-#
-rule "Find redundant Patterns with restrictions"
- when
- # Check that Patterns $left and $right have redundant fields.
- $left :Pattern()
- $right :Pattern(
- guid not matches $left.guid,
- objectTypeGuid matches $left.objectTypeGuid,
- # TODO: In some cases the source might be redundant with different sources.
- sourceType == $left.sourceType,
- sourceGuid == $left.sourceGuid,
- patternNot == $left.patternNot,
- patternExists == $left.patternExists,
- patternForall == $left.patternForall
- )
-
- # Has possibilities, if the there is no possibilities,
- # then the Redundancy type is STRONG.
- # Because these patterns have no restrictions.
- exists SubPattern( patternGuid matches $left.guid )
- exists SubPattern( patternGuid matches $right.guid )
-
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- not Redundancy(
- left == $right,
- right == $left
- )
- then
- insert( new Redundancy( RedundancyType.WEAK, $left, $right ) );
-end
-
-#
-# Checks for redundant pattern specifications when the patterns have no possibilities.
-#
-# Dependencies: None
-#
-rule "Find redundant Patterns without restrictions"
- when
- # Check that Patterns $left and $right have redundant fields.
- $left :Pattern()
- $right :Pattern(
- guid not matches $left.guid,
- objectTypeGuid == $left.objectTypeGuid,
- # TODO: In some cases the source might be redundant with different sources.
- sourceType == $left.sourceType,
- sourceGuid == $left.sourceGuid,
- patternNot == $left.patternNot,
- patternExists == $left.patternExists,
- patternForall == $left.patternForall
- )
-
- # Not possibilities
- not SubPattern( patternGuid matches $left.guid )
- not SubPattern( patternGuid matches $right.guid )
-
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- not Redundancy(
- left == $right,
- right == $left
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Possibilities.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,161 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.possibilities
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-import org.drools.verifier.report.components.PartialRedundancy;
-import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-
-import java.util.ArrayList;
-
-#
-# Fires when two PatternPossibilities are redundant.
-# Marks these possibilities as redundant.
-#
-# Dependencies: Needs at least one rule from both packages.
-#
-# package org.drools.verifier.redundancy.patterns
-# rule "Find redundant Patterns with restrictions"
-# rule "Find redundant Patterns without restrictions"
-# package org.drools.verifier.redundancy.restrictions
-# rule "Find redundant VariableRestriction"
-# rule "Find redundant LiteralRestriction"
-#
-# Example 1: Pattern1( a == b ) and Pattern1( a == b )
-# Example 2: Pattern1( a == b || a == c ) and Pattern1( a == b )
-#
-rule "Find pattern possibility redundancy"
- when
- $redundancy :Redundancy(
- left.causeType == CauseType.PATTERN
- )
-
- # Find two PatternPossibilities.
- (
- $pp1 :SubPattern(
- eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
- )
- and
- $pp2 :SubPattern(
- eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
- )
- ) or (
- $pp1 :SubPattern(
- eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
- )
- and
- $pp2 :SubPattern(
- eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
- )
- )
-
- # For every restriction in $pp1 there is a redundancy to $pp2.
- forall(
- $r :Restriction(
- patternGuid matches $pp1.patternGuid,
- this memberOf $pp1.items
- )
-
- Redundancy(
- (
- left == $r
- &&
- right memberOf $pp2.items
- ) || (
- left memberOf $pp2.items
- &&
- right == $r
- )
- )
- )
-
- # For every restriction in $pp2 there is a redundancy to $pp1.
- forall(
- $r :Restriction(
- patternGuid matches $pp2.patternGuid,
- this memberOf $pp2.items
- )
-
- Redundancy(
- (
- left == $r
- &&
- right memberOf $pp1.items
- ) || (
- left memberOf $pp1.items
- &&
- right == $r
- )
- )
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $pp1, $pp2 ) );
-end
-
-#
-# Fires when two PatternPossibilities are redundant.
-# Marks these possibilities as redundant.
-#
-# Dependencies:
-#
-# Needs at least one rule from these packages:
-# package org.drools.verifier.equivalency.rules
-# rule "Find equivalent Rules"
-# package org.drools.verifier.redundancy.rules
-# rule "Find redundant Rules, strong redundancy"
-#
-# And this rule:
-# package org.drools.verifier.redundancy.possibilities
-# rule "Find pattern possibility redundancy"
-#
-# Example: rule "1" Pattern( a == b) end
-# rule "2" Pattern( a == b) end
-#
-rule "Find rule possibility redundancy"
- when
- $redundancy :Redundancy(
- left.causeType == CauseType.RULE
- )
-
- # Find two RulePossibilities.
- $rp1 :SubRule(
- eval( ruleGuid.equals( $redundancy.getLeft().getGuid() ) )
- )
- $rp2 :SubRule(
- eval( ruleGuid.equals( $redundancy.getRight().getGuid() ) )
- )
-
- # For every pattern possibility in $rp1 there is a redundant pattern possibility in $rp2.
- forall(
- $pp :SubPattern(
- ruleGuid matches $rp1.ruleGuid,
- this memberOf $rp1.items
- )
-
- Redundancy(
- type == RedundancyType.STRONG,
- left == $pp,
- right memberOf $rp2.items
- )
-
- )
-
- # For every pattern possibility in $rp2 there is a redundant pattern possibility in $rp1.
- forall(
- $pp :SubPattern(
- ruleGuid matches $rp2.ruleGuid,
- this memberOf $rp2.items
- )
-
- Redundancy(
- type == RedundancyType.STRONG,
- left == $pp,
- right memberOf $rp1.items
- )
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $rp1, $rp2 ) );
-end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Redundancy.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,40 @@
+#created on: 16.11.2009
+package org.drools.verifier.redundancy
+
+#list any import classes here.
+#global VerifierReport result;
+
+
+
+#declare any global variables here
+#import org.drools.verifier.data.VerifierReport;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+
+#
+# If two objects are subsumptant to each others that makes them redundant.
+#
+# Dependencies:
+#
+# Needs at least the following package:
+# package org.drools.verifier.sumbumption
+#
+rule "Find redundancy"
+ when
+ $sub :Subsumption( )
+
+ Subsumption(
+ guid != $sub.guid,
+ left == $sub.right,
+ right == $sub.left
+ )
+
+ not Redundancy(
+ items contains $sub.left,
+ items contains $sub.right
+ )
+ then
+ insert( new Redundancy( $sub.getLeft(),
+ $sub.getRight() ) );
+end
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Restrictions.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,115 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.restrictions
-
-import org.drools.verifier.components.*;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Dependencies: None
-#
-rule "Find redundant VariableRestriction"
- when
- # Check that Restrictions $left and $right have redundant fields.
- $left :VariableRestriction()
- $right :VariableRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- variable.objectTypeType == $left.variable.objectTypeType,
- variable.objectTypeGuid matches $left.variable.objectTypeGuid
- )
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- not Redundancy(
- left == $right,
- right == $left
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
-
-#
-# Dependencies: None
-#
-rule "Find redundant LiteralRestriction"
- when
- # Check that Restrictions $left and $right have redundant fields.
- $left :LiteralRestriction()
- and
- (
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.BOOLEAN,
- booleanValue == $left.booleanValue
- )
- or
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.STRING,
- valueAsString matches $left.valueAsString
- )
- or
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.INT,
- intValue == $left.intValue
- )
- or
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.DOUBLE,
- doubleValue == $left.doubleValue
- )
- or
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.DATE,
- eval( dateValue.equals($left.getDateValue()) )
- )
- or
- (
- $right :LiteralRestriction(
- guid not matches $left.guid,
- operator == $left.operator,
- valueType == $left.valueType,
- valueType == Field.FieldType.VARIABLE
- )
- and
- $v :Variable(
- objectTypeType == VerifierComponentType.FIELD,
- objectTypeGuid matches $left.guid
- )
- and
- Variable(
- objectTypeType == VerifierComponentType.FIELD,
- objectTypeGuid matches $right.guid,
- objectTypeName == $v.objectTypeName,
- name matches $v.name
- )
- )
- )
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- not Redundancy(
- left == $right,
- right == $left
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Rules.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,39 +0,0 @@
-#created on: 7.9.2007
-package org.drools.verifier.redundancy.rules
-
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-#
-# Only checks for redundant rule specifications,
-# does not include actual pattern and restriction checks.
-#
-# Dependencies:
-#
-# package org.drools.verifier.redundancy.consequences
-# rule "Find redundant TextConsequences"
-#
-rule "Find redundant Rules, strong redundancy"
- when
- # Check that VerifierRule $left and $right have redundant fields.
- $left :VerifierRule()
- $right :VerifierRule(
- guid not matches $left.guid,
- ruleAgendaGroup == $left.ruleAgendaGroup
- )
-
- exists Redundancy(
- left == $left.consequence,
- right == $right.consequence
- )
-
- # Check that there is not already a pair with these values.
- not Redundancy(
- left == $left,
- right == $right
- )
- then
- insert( new Redundancy( RedundancyType.STRONG, $left, $right ) );
-end
-
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/redundancy/Warnings.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -11,15 +11,92 @@
import java.util.ArrayList;
import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.components.Consequence;
+
import org.drools.verifier.data.VerifierReport;
+
import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.Subsumption;
import org.drools.verifier.report.components.VerifierMessage;
import org.drools.verifier.report.components.Cause;
import org.drools.verifier.report.components.CauseType;
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.MessageType;
+
+rule "Find redundant LHS"
+ when
+ # Check that VerifierRule $left and $right have redundant fields.
+ $left :VerifierRule()
+
+ $right :VerifierRule(
+ guid != $left.guid
+ )
+
+
+ $leftSubRules : ArrayList()
+ from collect(
+ SubRule(
+ ruleGuid == $left.guid
+ )
+ )
+
+ $rightSubRules : ArrayList()
+ from collect(
+ SubRule(
+ ruleGuid == $right.guid
+ )
+ )
+
+ forall (
+ $subRule :SubRule(
+ ) from $leftSubRules
+
+ Subsumption(
+ left == $subRule,
+ right memberOf $rightSubRules
+ )
+ )
+ forall (
+ $subRule :SubRule(
+ ) from $rightSubRules
+
+ Subsumption(
+ left == $subRule,
+ right memberOf $leftSubRules
+ )
+ )
+ then
+end
+
+rule "Find equivalent Rules" extends "Find redundant LHS"
+ when
+
+ # RHS should not be redundant
+ $leftConsequence : Consequence(
+ guid == $left.consequenceGuid,
+ consequenceType == $left.consequenceType
+ )
+ $rightConsequence : Consequence(
+ guid == $right.consequenceGuid,
+ consequenceType == $right.consequenceType
+ )
+ not Redundancy(
+ items contains $leftConsequence,
+ items contains $rightConsequence
+ )
+ then
+ Collection causes = new ArrayList();
+ causes.add( $left );
+ causes.add( $right );
+
+ result.add(new VerifierMessage(
+ Severity.WARNING, MessageType.EQUIVALANCE,
+ $left, "Rule is equivalent to rule " + $right.getRuleName() + ".", causes ) );
+end
+
+
#
# Dependencies:
#
@@ -33,52 +110,34 @@
# package org.drools.verifier.redundancy.possibilities
# rule "Find rule possibility redundancy"
#
-rule "Find redundant rule possibilities from different rules"
- salience -100
+rule "Find redundant rules" extends "Find redundant LHS"
when
- $ruleRedundancy :Redundancy(
- left.causeType == CauseType.RULE
+
+ # RHS need to be redundant
+ $leftConsequence : Consequence(
+ guid == $left.consequenceGuid,
+ consequenceType == $left.consequenceType
)
-
- $rulePossibilityRedundancy :Redundancy(
- left.causeType == CauseType.RULE_POSSIBILITY
+ $rightConsequence : Consequence(
+ guid == $right.consequenceGuid,
+ consequenceType == $right.consequenceType
)
-
- # Check that redundant possibilities are from redundant rules
- exists SubRule(
- this == $rulePossibilityRedundancy.left,
- eval( ruleGuid.equals( $ruleRedundancy.getLeft().getGuid() ) )
- )
-
- exists SubRule(
- this == $rulePossibilityRedundancy.right,
- eval( ruleGuid.equals( $ruleRedundancy.getRight().getGuid() ) )
- )
-
- # Check that the possibilties are redundant to each other.
exists Redundancy(
- left.causeType == CauseType.RULE_POSSIBILITY,
- left == $rulePossibilityRedundancy.right,
- right == $rulePossibilityRedundancy.left
+ items contains $leftConsequence,
+ items contains $rightConsequence
)
then
Collection causes = new ArrayList();
- causes.add( $rulePossibilityRedundancy.getLeft() );
- causes.add( $rulePossibilityRedundancy.getRight() );
+ causes.add( $left );
+ causes.add( $right );
- String message;
- if( $ruleRedundancy.getType() == RedundancyType.WEAK ) {
- message = "Rules are equivalent.";
- } else {
- message = "Rules are redundant.";
- }
-
result.add(new VerifierMessage(
Severity.WARNING, MessageType.REDUNDANCY,
- $rulePossibilityRedundancy, message, causes ) );
+ $left, "Rule is redundant to rule " + $right.getRuleName() + ".", causes ) );
end
+
#
# Dependencies:
#
@@ -95,38 +154,24 @@
rule "Find subsumptant rule possibilities from different rules"
salience -100
when
- $ruleRedundancy :Redundancy(
- left.causeType == CauseType.RULE
+ $subsumption:Subsumption(
+ left.causeType == CauseType.SUB_RULE
)
-
- $rulePossibilityRedundancy :Redundancy(
- left.causeType == CauseType.RULE_POSSIBILITY
+
+ # No redundacy
+ not Subsumption(
+ left.causeType == CauseType.SUB_RULE,
+ left == $subsumption.right,
+ right == $subsumption.left
)
- # Check that redundant possibilities are from redundant rules
- exists SubRule(
- this == $rulePossibilityRedundancy.left,
- eval( ruleGuid.equals( $ruleRedundancy.getLeft().getGuid() ) )
- )
-
- exists SubRule(
- this == $rulePossibilityRedundancy.right,
- eval( ruleGuid.equals( $ruleRedundancy.getRight().getGuid() ) )
- )
-
- # Check that the left side is redundant to right, but the right side is not redundant to left.
- not Redundancy(
- left.causeType == CauseType.RULE_POSSIBILITY,
- left == $rulePossibilityRedundancy.right,
- right == $rulePossibilityRedundancy.left
- )
-
then
Collection causes = new ArrayList();
- causes.add( $rulePossibilityRedundancy.getLeft() );
- causes.add( $rulePossibilityRedundancy.getRight() );
+ causes.add( $subsumption.getLeft() );
+ causes.add( $subsumption.getRight() );
result.add(new VerifierMessage(
- Severity.WARNING, MessageType.REDUNDANCY,
- $rulePossibilityRedundancy, "Rules are subsumptant.", causes ) );
+ Severity.WARNING, MessageType.SUBSUMPTION,
+ $subsumption, "Rules are subsumptant.", causes ) );
end
+
Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Consequences.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,23 @@
+#created on: 1.12.2009
+package org.drools.verifier.subsumption.patterns
+
+
+import org.drools.verifier.components.TextConsequence;
+import org.drools.verifier.report.components.Subsumption;
+
+
+
+#
+#
+rule "Subsumptant consequences"
+ when
+ $left :TextConsequence()
+
+ $right :TextConsequence(
+ guid != $left.guid,
+ text == $left.text
+ )
+
+ then
+ insert( new Subsumption( $left, $right ) );
+end
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,148 +0,0 @@
-#created on: 8.1.2008
-package org.drools.verifier.subsumption.patterns
-
-import org.drools.verifier.components.Restriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.Subsumption;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.RedundancyType;
-
-
-#declare any global variables here
-
-#
-# Fires when two pattern possibilities are subsumptant.
-# Creates a Subsumption object.
-#
-# Dependencies: Needs at least one rule.
-#
-# package org.drools.verifier.redundancy.patterns
-# rule "Find redundant Patterns with restrictions"
-# rule "Find redundant Patterns without restrictions"
-#
-# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
-#
-rule "Find subsumptant pattern possibilities"
- when
-
- $redundancy :Redundancy(
- left.causeType == CauseType.PATTERN
- )
-
- # Find two PatternPossibilities.
- $pp1 :SubPattern(
- eval( patternGuid.equals( $redundancy.getLeft().getGuid() ) )
- )
- $pp2 :SubPattern(
- eval( patternGuid.equals( $redundancy.getRight().getGuid() ) )
- )
-
- # For every restriction in $pp1 there is a redundancy to restriction in $pp2.
- forall(
- $r :Restriction(
- this memberOf $pp1.items
- )
-
- Subsumption(
- left == $r,
- right memberOf $pp2.items
- )
- )
-
- # There is no restriction on $pp2 that has no redundancy in $pp1
- # and has a lower order number than an existing redundancy from $pp2 to $pp1.
- not(
- $r1 :Restriction(
- this memberOf $pp2.items
- )
- and
- $r2 :Restriction(
- this memberOf $pp2.items,
- orderNumber > $r1.orderNumber
- )
- and
- not Subsumption(
- left memberOf $pp1.items,
- right == $r1
- )
- and
- Subsumption(
- left memberOf $pp1.items,
- right == $r2
- )
- )
-
- then
- insert( new Subsumption( $pp1, $pp2 ) );
-end
-
-#
-# Fires when two pattern possibilities are subsumptant.
-# Creates a Subsumption object.
-#
-# Dependencies: Needs at least one rule from either one of the following packages.
-#
-# package org.drools.verifier.subsumption.patterns
-# rule "Find subsumptant pattern possibilities"
-#
-# package org.drools.verifier.redundancy.patterns
-# rule "Find redundant Patterns with restrictions"
-# rule "Find redundant Patterns without restrictions"
-#
-rule "Find subsumptant rule possibilities"
- when
-
- $redundancy :Redundancy(
- left.causeType == CauseType.RULE
- )
-
- # Find two RulePossibilities.
- $rp1 :SubRule(
- eval( ruleGuid.equals( $redundancy.getLeft().getGuid() ) )
- )
- $rp2 :SubRule(
- eval( ruleGuid.equals( $redundancy.getRight().getGuid() ) )
- )
-
- # For every SubPattern in $rp1 there is a redundancy to SubPattern in $rp2.
- forall(
- $pp :SubPattern(
- this memberOf $rp1.items
- )
-
- Subsumption(
- left == $pp,
- right memberOf $rp2.items
- )
- )
-
- # There is no SubPattern on $rp2 that has no redundancy in $rp1
- # and has a lower order number than an existing SubPattern from $rp2 to $rp1.
- not(
- $pp1 :SubPattern(
- this memberOf $rp2.items
- )
- and
- $pp2 :SubPattern(
- this memberOf $rp2.items,
- orderNumber > $pp1.orderNumber
- )
- and
- not Subsumption(
- left memberOf $rp1.items,
- right == $pp1
- )
- and
- Subsumption(
- left memberOf $rp1.items,
- right == $pp2
- )
- )
- then
- insert( new Subsumption( $rp1, $rp2 ) );
-end
-
-
Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Restrictions.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -20,7 +20,7 @@
rule "Find subsumptant restrictions, greater than"
when
# Covered x > 10
- $lower :LiteralRestriction(
+ $lower:LiteralRestriction(
( valueType == Field.FieldType.INT || == Field.FieldType.DOUBLE || == Field.FieldType.DATE ),
( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL )
)
@@ -28,14 +28,31 @@
# Covered x > 100
$higher :LiteralRestriction(
fieldGuid matches $lower.fieldGuid,
- ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL || == Operator.EQUAL)
+ ( operator == Operator.GREATER || == Operator.GREATER_OR_EQUAL || == Operator.EQUAL )
)
eval( $lower.compareValues( $higher ) == -1 )
then
- insert( new Subsumption( $lower, $higher ) );
+ insert( new Subsumption( $higher, $lower ) );
end
+rule "Find subsumptant restrictions, equal"
+ when
+ # Covered x > 10
+ $left :LiteralRestriction( )
+
+ # Covered x > 10
+ $right :LiteralRestriction(
+ guid != $left.guid,
+ fieldGuid matches $left.fieldGuid,
+ operator == $left.operator
+ )
+
+ eval( $left.compareValues( $right ) == 0 )
+ then
+ insert( new Subsumption( $left, $right ) );
+end
+
#
# Fires when two restrictions are subsumptant.
# Creates a Subsumption object.
Copied: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/Possibilities.drl)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubPatterns.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,121 @@
+#created on: 8.1.2008
+package org.drools.verifier.subsumption.patterns
+
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Source;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.CauseType;
+
+
+#declare any global variables here
+
+
+#
+# Fires when two pattern possibilities are subsumptant.
+# Creates a Subsumption object.
+#
+# Dependencies: Needs at least one rule.
+#
+# package org.drools.verifier.redundancy.patterns
+# rule "Find redundant Patterns with restrictions"
+# rule "Find redundant Patterns without restrictions"
+#
+# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
+#
+rule "Find subsumptant sub patterns, subsumptant source"
+ when
+
+ $subPattern1 :SubPattern()
+ $subPattern2 :SubPattern(
+ guid != $subPattern1.guid,
+ objectTypeGuid == $subPattern1.objectTypeGuid,
+ # TODO: Check these. Should work with the idea of subsumption.
+ patternNot == $subPattern1.patternNot,
+ patternExists == $subPattern1.patternExists,
+ patternForall == $subPattern1.patternForall
+ )
+ # Check if sources are equal or subsumptant
+ $sourceSubsumption :Subsumption(
+ left.causeType == CauseType.SOURCE
+ )
+ Source(
+ guid == $subPattern1.sourceGuid,
+ verifierComponentType == $subPattern1.sourceType,
+ this == $sourceSubsumption.left
+ )
+ Source(
+ guid == $subPattern2.sourceGuid,
+ verifierComponentType == $subPattern2.sourceType,
+ this == $sourceSubsumption.right
+ )
+
+ # For every restriction in $subPattern1 there is a subsumption to a restriction in $subPattern2.
+ forall (
+ $leftPatternComponent :PatternComponent(
+ ) from $subPattern1.items
+
+ Subsumption(
+ left == $leftPatternComponent,
+ right memberOf $subPattern2.items
+ )
+ )
+# not Subsumption(
+# left memberOf $subPattern1.items,
+# right not memberOf $subPattern2.items
+# )
+ then
+ insert( new Subsumption( $subPattern1, $subPattern2 ) );
+end
+
+#
+# Fires when two pattern possibilities are subsumptant.
+# Creates a Subsumption object.
+#
+# Dependencies: Needs at least one rule.
+#
+# package org.drools.verifier.redundancy.patterns
+# rule "Find redundant Patterns with restrictions"
+# rule "Find redundant Patterns without restrictions"
+#
+# Example 1: P( x == 10 ) and P( x == 10 && y == 20 )
+#
+rule "Find subsumptant sub patterns, same source"
+ when
+
+ $subPattern1 :SubPattern()
+ $subPattern2 :SubPattern(
+ guid != $subPattern1.guid,
+ objectTypeGuid == $subPattern1.objectTypeGuid,
+ # TODO: Check these. Should work with the idea of subsumption.
+ patternNot == $subPattern1.patternNot,
+ patternExists == $subPattern1.patternExists,
+ patternForall == $subPattern1.patternForall
+ )
+ # Check if sources are equal or subsumptant #
+ Source(
+ guid == $subPattern1.sourceGuid && == $subPattern2.sourceGuid,
+ verifierComponentType == $subPattern1.sourceType && == $subPattern2.sourceType
+ )
+
+ # For every restriction in $subPattern1 there is a subsumption to a restriction in $subPattern2.
+ forall (
+ $leftPatternComponent :PatternComponent(
+ ) from $subPattern1.items
+
+ Subsumption(
+ left == $leftPatternComponent,
+ right memberOf $subPattern2.items
+ )
+ )
+# not Subsumption(
+# left memberOf $subPattern1.items,
+# right not memberOf $subPattern2.items
+# )
+ then
+ insert( new Subsumption( $subPattern1, $subPattern2 ) );
+end
Added: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/subsumption/SubRules.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,47 @@
+#created on: 1.12.2009
+package org.drools.verifier.subsumption.patterns
+
+import org.drools.verifier.components.Restriction;
+import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.PatternComponent;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.Consequence;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.CauseType;
+
+
+#declare any global variables here
+
+#
+#
+rule "Find subsumptant sub rules"
+ when
+
+ $subRule1 :SubRule()
+ $subRule2 :SubRule(
+ guid != $subRule1.guid,
+ attributes["ruleflow-group"] == $subRule1.attributes["ruleflow-group"],
+ attributes["agenda-group"] == $subRule1.attributes["agenda-group"],
+ attributes["xor-group"] == $subRule1.attributes["xor-group"]
+ )
+
+ # For every restriction in $subRule1 there is a subsumption to a restriction in $subRule2.
+ forall (
+ $subPattern :SubPattern(
+ ) from $subRule1.items
+
+ Subsumption(
+ left == $subPattern,
+ right memberOf $subRule2.items
+ )
+ )
+# not Subsumption(
+# left memberOf $subRule1.items,
+# right not memberOf $subRule2.items
+# )
+ then
+ insert( new Subsumption( $subRule1, $subRule2 ) );
+end
+
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/SolversTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -9,6 +9,7 @@
import org.drools.verifier.components.LiteralRestriction;
import org.drools.verifier.components.OperatorDescr;
import org.drools.verifier.components.Pattern;
+import org.drools.verifier.components.RuleComponent;
import org.drools.verifier.components.SubPattern;
import org.drools.verifier.components.Restriction;
import org.drools.verifier.components.SubRule;
@@ -23,121 +24,125 @@
*/
public class SolversTest extends TestCase {
- /**
- * <pre>
- * when
- * Foo( r && r2 )
- * and
- * not Foo( r3 && r4 )
- * </pre>
- *
- * result:<br>
- * r && r2<br>
- * r3 && r4
- */
- public void testNotAnd() {
- VerifierRule rule = new VerifierRule();
- Pattern pattern = new Pattern();
+ /**
+ * <pre>
+ * when
+ * Foo( r && r2 )
+ * and
+ * not Foo( r3 && r4 )
+ * </pre>
+ *
+ * result:<br>
+ * r && r2<br>
+ * r3 && r4
+ */
+ public void testNotAnd() {
+ VerifierRule rule = new VerifierRule();
+ Pattern pattern = new Pattern();
- Restriction r = new LiteralRestriction();
- Restriction r2 = new LiteralRestriction();
- Restriction r3 = new LiteralRestriction();
- Restriction r4 = new LiteralRestriction();
+ Restriction r = new LiteralRestriction();
+ Restriction r2 = new LiteralRestriction();
+ Restriction r3 = new LiteralRestriction();
+ Restriction r4 = new LiteralRestriction();
- OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
- Solvers solvers = new Solvers();
+ OperatorDescr andDescr = new OperatorDescr( OperatorDescr.Type.AND );
+ Solvers solvers = new Solvers();
- solvers.startRuleSolver(rule);
+ solvers.startRuleSolver( rule );
- solvers.startOperator(OperatorDescr.Type.AND);
- solvers.startPatternSolver(pattern);
- solvers.startOperator(OperatorDescr.Type.AND);
- solvers.addRestriction(r);
- solvers.addRestriction(r2);
- solvers.endOperator();
- solvers.endPatternSolver();
+ solvers.startOperator( OperatorDescr.Type.AND );
+ solvers.startPatternSolver( pattern );
+ solvers.startOperator( OperatorDescr.Type.AND );
+ solvers.addRestriction( r );
+ solvers.addRestriction( r2 );
+ solvers.endOperator();
+ solvers.endPatternSolver();
- solvers.startNot();
- solvers.startPatternSolver(pattern);
- solvers.startOperator(OperatorDescr.Type.AND);
- solvers.addRestriction(r3);
- solvers.addRestriction(r4);
- solvers.endOperator();
- solvers.endPatternSolver();
- solvers.endNot();
+ solvers.startNot();
+ solvers.startPatternSolver( pattern );
+ solvers.startOperator( OperatorDescr.Type.AND );
+ solvers.addRestriction( r3 );
+ solvers.addRestriction( r4 );
+ solvers.endOperator();
+ solvers.endPatternSolver();
+ solvers.endNot();
- solvers.endOperator();
+ solvers.endOperator();
- solvers.endRuleSolver();
+ solvers.endRuleSolver();
- List<SubRule> list = solvers.getRulePossibilities();
- assertEquals(1, list.size());
- assertEquals(2, list.get(0).getItems().size());
+ List<SubRule> list = solvers.getRulePossibilities();
+ assertEquals( 1,
+ list.size() );
+ assertEquals( 2,
+ list.get( 0 ).getItems().size() );
- List<Restriction> result = new ArrayList<Restriction>();
- result.add(r);
- result.add(r2);
+ List<Restriction> result = new ArrayList<Restriction>();
+ result.add( r );
+ result.add( r2 );
- List<Restriction> result2 = new ArrayList<Restriction>();
- result2.add(r3);
- result2.add(r4);
+ List<Restriction> result2 = new ArrayList<Restriction>();
+ result2.add( r3 );
+ result2.add( r4 );
- Object[] possibilies = list.get(0).getItems().toArray();
- SubPattern p1 = (SubPattern) possibilies[0];
- SubPattern p2 = (SubPattern) possibilies[1];
+ Object[] possibilies = list.get( 0 ).getItems().toArray();
+ SubPattern p1 = (SubPattern) possibilies[0];
+ SubPattern p2 = (SubPattern) possibilies[1];
- /*
- * Order may change but it doesn't matter.
- */
- if (p1.getItems().containsAll(result)) {
- assertTrue(p2.getItems().containsAll(result2));
- } else if (p1.getItems().containsAll(result2)) {
- assertTrue(p2.getItems().containsAll(result));
- } else {
- fail("No items found.");
- }
- }
+ /*
+ * Order may change but it doesn't matter.
+ */
+ if ( p1.getItems().containsAll( result ) ) {
+ assertTrue( p2.getItems().containsAll( result2 ) );
+ } else if ( p1.getItems().containsAll( result2 ) ) {
+ assertTrue( p2.getItems().containsAll( result ) );
+ } else {
+ fail( "No items found." );
+ }
+ }
- /**
- * <pre>
- * when
- * Foo( descr && descr2 )
- * </pre>
- *
- * result:<br>
- * descr && descr2
- */
- public void testBasicAnd() {
- VerifierRule rule = new VerifierRule();
- Pattern pattern = new Pattern();
+ /**
+ * <pre>
+ * when
+ * Foo( descr && descr2 )
+ * </pre>
+ *
+ * result:<br>
+ * descr && descr2
+ */
+ public void testBasicAnd() {
+ VerifierRule rule = new VerifierRule();
+ Pattern pattern = new Pattern();
- Restriction r = new LiteralRestriction();
- Restriction r2 = new LiteralRestriction();
+ Restriction r = new LiteralRestriction();
+ Restriction r2 = new LiteralRestriction();
- OperatorDescr andDescr = new OperatorDescr(OperatorDescr.Type.AND);
- Solvers solvers = new Solvers();
+ OperatorDescr andDescr = new OperatorDescr( OperatorDescr.Type.AND );
+ Solvers solvers = new Solvers();
- solvers.startRuleSolver(rule);
- solvers.startPatternSolver(pattern);
- solvers.startOperator(OperatorDescr.Type.AND);
- solvers.addRestriction(r);
- solvers.addRestriction(r2);
- solvers.endOperator();
- solvers.endPatternSolver();
- solvers.endRuleSolver();
+ solvers.startRuleSolver( rule );
+ solvers.startPatternSolver( pattern );
+ solvers.startOperator( OperatorDescr.Type.AND );
+ solvers.addRestriction( r );
+ solvers.addRestriction( r2 );
+ solvers.endOperator();
+ solvers.endPatternSolver();
+ solvers.endRuleSolver();
- List<SubRule> list = solvers.getRulePossibilities();
- assertEquals(1, list.size());
- assertEquals(1, list.get(0).getItems().size());
+ List<SubRule> list = solvers.getRulePossibilities();
+ assertEquals( 1,
+ list.size() );
+ assertEquals( 1,
+ list.get( 0 ).getItems().size() );
- List<Restriction> result = new ArrayList<Restriction>();
- result.add(r);
- result.add(r2);
+ List<Restriction> result = new ArrayList<Restriction>();
+ result.add( r );
+ result.add( r2 );
- Set<Cause> set = list.get(0).getItems();
- for (Cause cause : set) {
- SubPattern possibility = (SubPattern) cause;
- assertTrue(possibility.getItems().containsAll(result));
- }
- }
+ Set<RuleComponent> set = list.get( 0 ).getItems();
+ for ( RuleComponent component : set ) {
+ SubPattern possibility = (SubPattern) component;
+ assertTrue( possibility.getItems().containsAll( result ) );
+ }
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/VerifierTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -40,7 +40,7 @@
result.getBySeverity( Severity.ERROR ).size() );
assertEquals( 10,
result.getBySeverity( Severity.WARNING ).size() );
- assertEquals( 16,
+ assertEquals( 5,
result.getBySeverity( Severity.NOTE ).size() );
}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/equivalence/EquivalentRulesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,58 +1,68 @@
package org.drools.verifier.equivalence;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.VerifierRule;
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.redundancy.RedundancyTestBase;
+import org.drools.verifier.report.components.MessageType;
import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Severity;
+import org.drools.verifier.report.components.Subsumption;
+import org.drools.verifier.report.components.VerifierMessageBase;
-public class EquivalentRulesTest extends RedundancyTestBase {
+/**
+ *
+ * @author Toni Rikkola
+ *
+ */
+public class EquivalentRulesTest extends TestCase {
- public void testRuleRedundancy() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Rules.drl"));
+ public void testVerifierLiteralRestrictionRedundancy() throws Exception {
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find equivalent Rules"));
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
- Collection<Object> data = new ArrayList<Object>();
+ Verifier verifier = vBuilder.newVerifier();
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "EquivalentRules.drl",
+ getClass() ),
+ ResourceType.DRL );
- VerifierRule rule1 = new VerifierRule();
- rule1.setRuleName(ruleName1);
- VerifierRule rule2 = new VerifierRule();
- rule2.setRuleName(ruleName2);
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
- Redundancy r1 = new Redundancy(rule1, rule2);
+ assertFalse( verifier.hasErrors() );
- data.add(rule1);
- data.add(rule2);
- data.add(r1);
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal("result", result);
+ VerifierReport result = verifier.getResult();
- StatelessSessionResult sessionResult = session.executeWithResults(data);
+ Collection<VerifierMessageBase> warnings = result.getBySeverity( Severity.WARNING );
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
+ int counter = 0;
+ for ( VerifierMessageBase message : warnings ) {
+ // System.out.println( message );
+ if ( message.getMessageType().equals( MessageType.EQUIVALANCE ) ) {
+ // System.out.println( message );
+ counter++;
+ }
+ }
- assertTrue(TestBase.mapContains(map, ruleName1, ruleName2));
- assertTrue(TestBase.mapContains(map, ruleName2, ruleName1));
+ // Has at least one item.
+ assertEquals( 2,
+ counter );
- if (!map.isEmpty()) {
- fail("More equivalences than was expected.");
- }
- }
+ verifier.dispose();
+ }
+
}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/incompatibility/IncompatibilityPatternsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -87,7 +87,7 @@
StatelessSessionResult sessionResult = session.executeWithResults(data);
Map<Cause, Set<Cause>> map = createIncompatibilityMap(
- CauseType.PATTERN_POSSIBILITY, sessionResult.iterateObjects());
+ CauseType.SUB_PATTERN, sessionResult.iterateObjects());
assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
.causeMapContains(map, pp2, pp1)));
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/misc/PackageDescrVisitorTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -8,6 +8,9 @@
import org.drools.compiler.DroolsParserException;
import org.drools.lang.descr.PackageDescr;
import org.drools.verifier.Verifier;
+import org.drools.verifier.components.SubPattern;
+import org.drools.verifier.components.SubRule;
+import org.drools.verifier.components.VerifierComponentType;
import org.drools.verifier.data.VerifierComponent;
import org.drools.verifier.data.VerifierData;
import org.drools.verifier.data.VerifierReportFactory;
@@ -34,12 +37,75 @@
Collection<VerifierComponent> all = data.getAll();
assertNotNull( all );
- assertEquals( 49,
+ assertEquals( 50,
all.size() );
-// for ( VerifierComponent verifierComponent : all ) {
-// System.out.println( verifierComponent );
-// }
+ // for ( VerifierComponent verifierComponent : all ) {
+ // System.out.println( verifierComponent );
+ // }
}
+ public void testSubPatterns() throws DroolsParserException,
+ UnknownDescriptionException {
+ PackageDescrVisitor visitor = new PackageDescrVisitor();
+ VerifierData data = VerifierReportFactory.newVerifierData();
+
+ assertNotNull( data );
+
+ Reader drlReader = new InputStreamReader( getClass().getResourceAsStream( "SubPattern.drl" ) );
+ PackageDescr packageDescr = new DrlParser().parse( drlReader );
+
+ assertNotNull( packageDescr );
+
+ visitor.addPackageDescrToData( packageDescr,
+ data );
+
+ Collection<VerifierComponent> all = data.getAll();
+
+ assertNotNull( all );
+
+ SubPattern test1SubPattern = null;
+ SubPattern test2SubPattern = null;
+ SubRule test1SubRule = null;
+ SubRule test2SubRule = null;
+
+ for ( VerifierComponent verifierComponent : all ) {
+ // System.out.println( verifierComponent );
+
+ if ( verifierComponent.getVerifierComponentType().equals( VerifierComponentType.SUB_PATTERN ) ) {
+ SubPattern subPattern = (SubPattern) verifierComponent;
+ if ( "Test 1".equals( subPattern.getRuleName() ) ) {
+ assertNull( test1SubPattern );
+ test1SubPattern = subPattern;
+ } else if ( "Test 2".equals( subPattern.getRuleName() ) ) {
+ assertNull( test2SubPattern );
+ test2SubPattern = subPattern;
+ }
+ }
+ if ( verifierComponent.getVerifierComponentType().equals( VerifierComponentType.SUB_RULE ) ) {
+ SubRule subRule = (SubRule) verifierComponent;
+ if ( "Test 1".equals( subRule.getRuleName() ) ) {
+ assertNull( test1SubRule );
+ test1SubRule = subRule;
+ } else if ( "Test 2".equals( subRule.getRuleName() ) ) {
+ assertNull( test2SubRule );
+ test2SubRule = subRule;
+ }
+ }
+ }
+
+ assertNotNull( test1SubPattern );
+ assertEquals( 3,
+ test1SubPattern.getItems().size() );
+ assertNotNull( test2SubPattern );
+ assertEquals( 3,
+ test2SubPattern.getItems().size() );
+ assertNotNull( test1SubRule );
+ assertEquals( 1,
+ test1SubRule.getItems().size() );
+ assertNotNull( test2SubRule );
+ assertEquals( 1,
+ test2SubRule.getItems().size() );
+
+ }
}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositePatternsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -87,7 +87,7 @@
StatelessSessionResult sessionResult = session.executeWithResults(data);
Map<Cause, Set<Cause>> map = createOppositesMap(
- CauseType.PATTERN_POSSIBILITY, sessionResult.iterateObjects());
+ CauseType.SUB_PATTERN, sessionResult.iterateObjects());
assertTrue((TestBase.causeMapContains(map, pp1, pp2) ^ TestBase
.causeMapContains(map, pp2, pp1)));
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/NotesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -12,90 +12,84 @@
import org.drools.verifier.data.VerifierReport;
import org.drools.verifier.data.VerifierReportFactory;
import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.VerifierMessageBase;
public class NotesTest extends TestBase {
- public void testRedundantRestrictionsInPatternPossibilities()
- throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Notes.drl"));
+ public void testRedundantRestrictionsInPatternPossibilities() throws Exception {
+ StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Notes.drl" ) );
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant restrictions from pattern possibilities"));
+ session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant restrictions from pattern possibilities" ) );
- Collection<Object> objects = new ArrayList<Object>();
- LiteralRestriction left = new LiteralRestriction();
+ Collection<Object> objects = new ArrayList<Object>();
+ LiteralRestriction left = new LiteralRestriction();
- LiteralRestriction right = new LiteralRestriction();
+ LiteralRestriction right = new LiteralRestriction();
- Redundancy redundancy = new Redundancy(
- RedundancyType.STRONG, left, right);
+ Redundancy redundancy = new Redundancy( left,
+ right );
- SubPattern possibility = new SubPattern();
- possibility.add(left);
- possibility.add(right);
+ SubPattern possibility = new SubPattern();
+ possibility.add( left );
+ possibility.add( right );
- objects.add(left);
- objects.add(right);
- objects.add(redundancy);
- objects.add(possibility);
+ objects.add( left );
+ objects.add( right );
+ objects.add( redundancy );
+ objects.add( possibility );
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal("result", result);
+ VerifierReport result = VerifierReportFactory.newVerifierReport();
+ session.setGlobal( "result",
+ result );
- session.executeWithResults(objects);
+ session.executeWithResults( objects );
- Collection<VerifierMessageBase> notes = result
- .getBySeverity(Severity.NOTE);
+ Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.NOTE );
- // Has at least one item.
- assertEquals(1, notes.size());
+ // Has at least one item.
+ assertEquals( 1,
+ notes.size() );
- VerifierMessageBase note = notes.iterator().next();
- assertTrue(note.getFaulty().equals(redundancy));
- }
+ VerifierMessageBase note = notes.iterator().next();
+ assertTrue( note.getFaulty().equals( redundancy ) );
+ }
- public void testRedundantPatternPossibilitiesInRulePossibilities()
- throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Notes.drl"));
+ public void testRedundantPatternPossibilitiesInRulePossibilities() throws Exception {
+ StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Notes.drl" ) );
- session
- .setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant pattern possibilities from rule possibilities"));
+ session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant pattern possibilities from rule possibilities" ) );
- Collection<Object> objects = new ArrayList<Object>();
- SubPattern left = new SubPattern();
+ Collection<Object> objects = new ArrayList<Object>();
+ SubPattern left = new SubPattern();
- SubPattern right = new SubPattern();
+ SubPattern right = new SubPattern();
- Redundancy redundancy = new Redundancy(
- RedundancyType.STRONG, left, right);
+ Redundancy redundancy = new Redundancy( left,
+ right );
- SubRule possibility = new SubRule();
- possibility.add(left);
- possibility.add(right);
+ SubRule possibility = new SubRule();
+ possibility.add( left );
+ possibility.add( right );
- objects.add(left);
- objects.add(right);
- objects.add(redundancy);
- objects.add(possibility);
+ objects.add( left );
+ objects.add( right );
+ objects.add( redundancy );
+ objects.add( possibility );
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal("result", result);
+ VerifierReport result = VerifierReportFactory.newVerifierReport();
+ session.setGlobal( "result",
+ result );
- session.executeWithResults(objects);
+ session.executeWithResults( objects );
- Collection<VerifierMessageBase> notes = result
- .getBySeverity(Severity.NOTE);
+ Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.NOTE );
- // Has at least one item.
- assertEquals(1, notes.size());
+ // Has at least one item.
+ assertEquals( 1,
+ notes.size() );
- VerifierMessageBase note = notes.iterator().next();
- assertTrue(note.getFaulty().equals(redundancy));
- }
+ VerifierMessageBase note = notes.iterator().next();
+ assertTrue( note.getFaulty().equals( redundancy ) );
+ }
}
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,49 @@
+package org.drools.verifier.redundancy;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.Redundancy;
+import org.drools.verifier.report.components.Subsumption;
+
+/**
+ *
+ * @author rikkola
+ *
+ */
+public class RedundancyTest extends TestCase {
+
+ public void testVerifierLiteralRestrictionRedundancy() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "RedundantRestrictions.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+ Collection<Object> redundancyList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Redundancy.class ) );
+
+ assertEquals( 2,
+ subsumptionList.size() );
+ assertEquals( 1,
+ redundancyList.size() );
+
+ verifier.dispose();
+ }
+}
\ No newline at end of file
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundancyTestBase.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,118 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.RuleComponent;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.Redundancy;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class RedundancyTestBase extends TestBase {
-
- /**
- * Creates redundancy map from Redundancy objects, one rule may have several
- * redundancy dependencies.
- *
- * @param iter
- * @return
- */
- protected Map<String, Set<String>> createRedundancyMap(Iterator<Object> iter) {
-
- Map<String, Set<String>> map = new HashMap<String, Set<String>>();
- while ( iter.hasNext() ) {
- Object o = (Object) iter.next();
- if ( o instanceof Redundancy ) {
- Redundancy r = (Redundancy) o;
- RuleComponent left = (RuleComponent) r.getLeft();
- RuleComponent right = (RuleComponent) r.getRight();
-
- if ( map.containsKey( left.getRuleName() ) ) {
- Set<String> set = map.get( left.getRuleName() );
- set.add( right.getRuleName() );
- } else {
- Set<String> set = new HashSet<String>();
- set.add( right.getRuleName() );
- map.put( left.getRuleName(),
- set );
- }
- }
- }
-
- return map;
- }
-
- /**
- * Creates redundancy map from Redundancy objects, one rule may have several
- * redundancy dependencies.
- *
- * @param iter
- * @return
- */
- protected Map<Cause, Set<Cause>> createRedundancyCauseMap(CauseType type,
- Iterator<Object> iter) {
-
- Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
- while ( iter.hasNext() ) {
- Object o = (Object) iter.next();
- if ( o instanceof Redundancy ) {
- Redundancy r = (Redundancy) o;
-
- if ( r.getLeft().getCauseType() == type ) {
- Cause left = r.getLeft();
- Cause right = r.getRight();
-
- if ( map.containsKey( left ) ) {
- Set<Cause> set = map.get( left );
- set.add( right );
- } else {
- Set<Cause> set = new HashSet<Cause>();
- set.add( right );
- map.put( left,
- set );
- }
- }
- }
- }
-
- return map;
- }
-
- public void testDummy() {
- // this is needed as eclipse will try to run this and produce a failure
- // if its not here.
- }
-
- /**
- * Returns true if map contains redundancy where key is redundant to value.
- *
- * @param map
- * @param key
- * @param value
- * @return True if redundancy exists.
- */
- protected static boolean mapContains(Map<String, Set<Redundancy>> map,
- String key,
- Object value) {
- if ( map.containsKey( key ) ) {
- Set<Redundancy> set = map.get( key );
- boolean exists = set.remove( value );
-
- // If set is empty remove key from map.
- if ( set.isEmpty() ) {
- map.remove( key );
- }
- return exists;
- }
- return false;
- }
-}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantConsequencesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,55 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-
-public class RedundantConsequencesTest extends RedundancyTestBase {
-
- public void testRedundantTextConsequences() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Consequence.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant TextConsequences"));
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- Collection<? extends Object> data = getTestData(this.getClass()
- .getResourceAsStream("ConsequenceRedundancyTest.drl"), result
- .getVerifierData());
-
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 1a",
- "Redundant consiquence 1b"));
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 1b",
- "Redundant consiquence 1a"));
-
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 2a",
- "Redundant consiquence 2b"));
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 2b",
- "Redundant consiquence 2a"));
-
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 3a",
- "Redundant consiquence 3b"));
- assertTrue(TestBase.mapContains(map, "Redundant consiquence 3b",
- "Redundant consiquence 3a"));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-
-}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantPossibilitiesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,207 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.CauseType;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-
-public class RedundantPossibilitiesTest extends RedundancyTestBase {
-
- public void testSubPatternRedundancy() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find pattern possibility redundancy" ) );
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- Pattern p1 = new Pattern();
- p1.setRuleName( ruleName1 );
- Pattern p2 = new Pattern();
- p2.setRuleName( ruleName2 );
-
- LiteralRestriction lr1 = new LiteralRestriction();
- lr1.setRuleName( ruleName1 );
- LiteralRestriction lr2 = new LiteralRestriction();
- lr2.setRuleName( ruleName2 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setPatternGuid( p1.getGuid() );
- pp1.setRuleName( ruleName1 );
- pp1.add( lr1 );
-
- SubPattern pp2 = new SubPattern();
- pp2.setPatternGuid( p2.getGuid() );
- pp2.setRuleName( ruleName2 );
- pp2.add( lr2 );
-
- Redundancy r1 = new Redundancy( lr1,
- lr2 );
- Redundancy r2 = new Redundancy( p1,
- p2 );
-
- data.add( p1 );
- data.add( p2 );
- data.add( lr1 );
- data.add( lr2 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( r1 );
- data.add( r2 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<String, Set<String>> map = createRedundancyMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.mapContains( map,
- ruleName1,
- ruleName2 ) );
- assertTrue( TestBase.mapContains( map,
- ruleName2,
- ruleName1 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-
- public void testSubRuleRedundancy() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find rule possibility redundancy" ) );
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- /*
- * First rules. These are redundant,
- */
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- VerifierRule r1 = new VerifierRule();
- r1.setRuleName( ruleName1 );
- VerifierRule r2 = new VerifierRule();
- r2.setRuleName( ruleName2 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setRuleName( ruleName1 );
- SubPattern pp2 = new SubPattern();
- pp2.setRuleName( ruleName2 );
-
- SubRule rp1 = new SubRule();
- rp1.setRuleGuid( r1.getGuid() );
- rp1.setRuleName( ruleName1 );
- rp1.add( pp1 );
-
- SubRule rp2 = new SubRule();
- rp2.setRuleGuid( r2.getGuid() );
- rp2.setRuleName( ruleName2 );
- rp2.add( pp2 );
-
- Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
- pp1,
- pp2 );
- Redundancy ruleRedundancy = new Redundancy( r1,
- r2 );
-
- data.add( r1 );
- data.add( r2 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( possibilityredundancy );
- data.add( ruleRedundancy );
- data.add( rp1 );
- data.add( rp2 );
-
- /*
- * These two rules are not redundant
- */
- String ruleName3 = "Rule 3";
- String ruleName4 = "Rule 4";
-
- VerifierRule r3 = new VerifierRule();
- r3.setRuleName( ruleName3 );
- VerifierRule r4 = new VerifierRule();
- r4.setRuleName( ruleName4 );
-
- SubPattern pp3 = new SubPattern();
- pp3.setRuleGuid( r3.getGuid() );
- pp3.setRuleName( ruleName3 );
- SubPattern pp4 = new SubPattern();
- pp4.setRuleGuid( r4.getGuid() );
- pp4.setRuleName( ruleName4 );
- // This possibility makes them different
- SubPattern pp5 = new SubPattern();
- pp5.setRuleGuid( r4.getGuid() );
- pp5.setRuleName( ruleName4 );
-
- SubRule rp3 = new SubRule();
- rp3.setRuleGuid( r3.getGuid() );
- rp3.setRuleName( ruleName3 );
- rp3.add( pp3 );
-
- SubRule rp4 = new SubRule();
- rp4.setRuleGuid( r4.getGuid() );
- rp4.setRuleName( ruleName4 );
- rp4.add( pp4 );
- rp4.add( pp5 );
-
- Redundancy possibilityredundancy2 = new Redundancy( RedundancyType.STRONG,
- pp3,
- pp4 );
- Redundancy ruleRedundancy2 = new Redundancy( r3,
- r4 );
-
- data.add( r3 );
- data.add( r4 );
- data.add( pp3 );
- data.add( pp4 );
- data.add( pp5 );
- data.add( possibilityredundancy2 );
- data.add( ruleRedundancy2 );
- data.add( rp3 );
- data.add( rp4 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createRedundancyCauseMap( CauseType.RULE_POSSIBILITY,
- sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- rp1,
- rp2 ) );
- assertFalse( TestBase.causeMapContains( map,
- rp3,
- rp4 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRestrictionsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,80 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-
-public class RedundantRestrictionsTest extends RedundancyTestBase {
-
- public void testVerifierLiteralRestrictionRedundancy() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Restrictions.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant LiteralRestriction"));
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- Collection<? extends Object> data = getTestData(this.getClass()
- .getResourceAsStream("RedundancyLiteralRestrictionTest.drl"),
- result.getVerifierData());
-
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue((TestBase.mapContains(map, "Redundant 1a", "Redundant 1b") ^ TestBase
- .mapContains(map, "Redundant 1b", "Redundant 1a")));
- assertTrue((TestBase.mapContains(map, "Redundant 2a", "Redundant 2b") ^ TestBase
- .mapContains(map, "Redundant 2b", "Redundant 2a")));
- assertTrue((TestBase.mapContains(map, "Redundant 3a", "Redundant 3b") ^ TestBase
- .mapContains(map, "Redundant 3b", "Redundant 3a")));
- assertTrue((TestBase.mapContains(map, "Redundant 4a", "Redundant 4b") ^ TestBase
- .mapContains(map, "Redundant 4b", "Redundant 4a")));
- assertTrue((TestBase.mapContains(map, "Redundant 5a", "Redundant 5b") ^ TestBase
- .mapContains(map, "Redundant 5b", "Redundant 5a")));
- assertTrue((TestBase.mapContains(map, "Redundant 6a", "Redundant 6b") ^ TestBase
- .mapContains(map, "Redundant 6b", "Redundant 6a")));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-
- public void testVerifierVariableRestrictionRedundancy() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Restrictions.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant VariableRestriction"));
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- Collection<? extends Object> data = getTestData(this.getClass()
- .getResourceAsStream("SubsumptionVariableRestrictionTest.drl"),
- result.getVerifierData());
-
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue(TestBase.mapContains(map, "Redundant 1a", "Redundant 1b")
- ^ TestBase.mapContains(map, "Redundant 1b", "Redundant 1a"));
- assertTrue(TestBase.mapContains(map, "Redundant 2a", "Redundant 2a"));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/RedundantRulesAndPatternsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,166 +0,0 @@
-package org.drools.verifier.redundancy;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.TextConsequence;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Redundancy;
-
-public class RedundantRulesAndPatternsTest extends RedundancyTestBase {
-
- public void testRuleRedundancy() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Rules.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant Rules, strong redundancy"));
-
- Collection<Object> data = new ArrayList<Object>();
-
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- VerifierRule rule1 = new VerifierRule();
- rule1.setRuleName(ruleName1);
- VerifierRule rule2 = new VerifierRule();
- rule2.setRuleName(ruleName2);
-
- TextConsequence c1 = new TextConsequence();
- c1.setRuleName(ruleName1);
- TextConsequence c2 = new TextConsequence();
- c2.setRuleName(ruleName2);
-
- Redundancy r1 = new Redundancy(rule1, rule2);
- Redundancy r2 = new Redundancy(c1, c2);
-
- data.add(rule1);
- data.add(rule2);
- data.add(c1);
- data.add(c2);
- data.add(r1);
- data.add(r2);
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue(TestBase.mapContains(map, ruleName1, ruleName2)
- ^ TestBase.mapContains(map, ruleName2, ruleName1));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-
- public void testPatternRedundancyWithRestrictions() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Patterns.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant Patterns with restrictions"));
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- Collection<? extends Object> data = getTestData(this.getClass()
- .getResourceAsStream("PatternRedundancyTest.drl"), result
- .getVerifierData());
-
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy with restrictions 1a",
- "Pattern redundancy with restrictions 1b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy with restrictions 1b",
- "Pattern redundancy with restrictions 1a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy with restrictions 2a",
- "Pattern redundancy with restrictions 2b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy with restrictions 2b",
- "Pattern redundancy with restrictions 2a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy with restrictions 3a",
- "Pattern redundancy with restrictions 3b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy with restrictions 3b",
- "Pattern redundancy with restrictions 3a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy with restrictions 4a",
- "Pattern redundancy with restrictions 4b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy with restrictions 4b",
- "Pattern redundancy with restrictions 4a"));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-
- public void testPatternRedundancyWithoutRestrictions() throws Exception {
- StatelessSession session = getStatelessSession(this.getClass()
- .getResourceAsStream("Patterns.drl"));
-
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Find redundant Patterns without restrictions"));
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- Collection<? extends Object> data = getTestData(this.getClass()
- .getResourceAsStream("PatternRedundancyTest.drl"), result
- .getVerifierData());
-
- session.setGlobal("result", result);
-
- StatelessSessionResult sessionResult = session.executeWithResults(data);
-
- Map<String, Set<String>> map = createRedundancyMap(sessionResult
- .iterateObjects());
-
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy without restrictions 1a",
- "Pattern redundancy without restrictions 1b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy without restrictions 1b",
- "Pattern redundancy without restrictions 1a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy without restrictions 2a",
- "Pattern redundancy without restrictions 2b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy without restrictions 2b",
- "Pattern redundancy without restrictions 2a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy without restrictions 3a",
- "Pattern redundancy without restrictions 3b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy without restrictions 3b",
- "Pattern redundancy without restrictions 3a"));
- assertTrue(TestBase.mapContains(map,
- "Pattern redundancy without restrictions 4a",
- "Pattern redundancy without restrictions 4b")
- ^ TestBase.mapContains(map,
- "Pattern redundancy without restrictions 4b",
- "Pattern redundancy without restrictions 4a"));
-
- if (!map.isEmpty()) {
- fail("More redundancies than was expected.");
- }
- }
-
-}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/redundancy/WarningsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,118 +1,56 @@
package org.drools.verifier.redundancy;
-import java.util.ArrayList;
import java.util.Collection;
-import org.drools.StatelessSession;
-import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
import org.drools.verifier.TestBase;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
+import org.drools.verifier.report.components.MessageType;
import org.drools.verifier.report.components.Severity;
import org.drools.verifier.report.components.VerifierMessageBase;
public class WarningsTest extends TestBase {
public void testRedundantRules() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Warnings.drl" ) );
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find redundant rule possibilities from different rules" ) );
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
- Collection<Object> objects = new ArrayList<Object>();
+ Verifier verifier = vBuilder.newVerifier();
- VerifierRule rule1 = new VerifierRule();
- VerifierRule rule2 = new VerifierRule();
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "RedundantRules1.drl",
+ getClass() ),
+ ResourceType.DRL );
- Redundancy ruleRedundancy = new Redundancy( RedundancyType.STRONG,
- rule1,
- rule2 );
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
- SubRule rp1 = new SubRule();
- rp1.setRuleGuid( rule1.getGuid() );
+ assertFalse( verifier.hasErrors() );
- SubRule rp2 = new SubRule();
- rp2.setRuleGuid( rule2.getGuid() );
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
- Redundancy rulePossibilityRedundancy1 = new Redundancy( RedundancyType.STRONG,
- rp1,
- rp2 );
+ VerifierReport result = verifier.getResult();
- Redundancy rulePossibilityRedundancy2 = new Redundancy( RedundancyType.STRONG,
- rp2,
- rp1 );
+ Collection<VerifierMessageBase> warnings = result.getBySeverity( Severity.WARNING );
- objects.add( rule1 );
- objects.add( rule2 );
- objects.add( ruleRedundancy );
- objects.add( rp1 );
- objects.add( rp2 );
- objects.add( rulePossibilityRedundancy1 );
- objects.add( rulePossibilityRedundancy2 );
+ int counter = 0;
+ for ( VerifierMessageBase message : warnings ) {
+ // System.out.println( message );
+ if ( message.getMessageType().equals( MessageType.REDUNDANCY ) ) {
+ // System.out.println( message );
+ counter++;
+ }
+ }
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
+ assertEquals( 2,
+ counter );
- session.executeWithResults( objects );
-
- Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.WARNING );
-
- // Has at least one item.
- assertEquals( 1,
- notes.size() );
-
- VerifierMessageBase warning = notes.iterator().next();
- assertTrue( warning.getFaulty().equals( rulePossibilityRedundancy1 ) );
+ verifier.dispose();
}
-
- public void testSubsumptantRules() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Warnings.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities from different rules" ) );
-
- Collection<Object> objects = new ArrayList<Object>();
-
- VerifierRule rule1 = new VerifierRule();
- VerifierRule rule2 = new VerifierRule();
-
- Redundancy ruleRedundancy = new Redundancy( RedundancyType.STRONG,
- rule1,
- rule2 );
-
- SubRule rp1 = new SubRule();
- rp1.setRuleGuid( rule1.getGuid() );
-
- SubRule rp2 = new SubRule();
- rp2.setRuleGuid( rule2.getGuid() );
-
- Redundancy rulePossibilityRedundancy1 = new Redundancy( RedundancyType.STRONG,
- rp1,
- rp2 );
-
- objects.add( rule1 );
- objects.add( rule2 );
- objects.add( ruleRedundancy );
- objects.add( rp1 );
- objects.add( rp2 );
- objects.add( rulePossibilityRedundancy1 );
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- session.executeWithResults( objects );
-
- Collection<VerifierMessageBase> notes = result.getBySeverity( Severity.WARNING );
-
- // Has at least one item.
- assertEquals( 1,
- notes.size() );
-
- VerifierMessageBase warning = notes.iterator().next();
- assertTrue( warning.getFaulty().equals( rulePossibilityRedundancy1 ) );
- }
}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,318 +0,0 @@
-package org.drools.verifier.subsumption;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.components.Pattern;
-import org.drools.verifier.components.SubPattern;
-import org.drools.verifier.components.SubRule;
-import org.drools.verifier.components.VerifierRule;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.RedundancyType;
-import org.drools.verifier.report.components.Subsumption;
-
-public class SubsumptantPossibilitiesTest extends SubsumptionTestBase {
-
- public void testSubPatternRedundancy1() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant pattern possibilities" ) );
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- /*
- * Redundant patterns
- */
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- Pattern p1 = new Pattern();
- p1.setRuleName( ruleName1 );
- Pattern p2 = new Pattern();
- p2.setRuleName( ruleName2 );
-
- LiteralRestriction lr1 = new LiteralRestriction();
- lr1.setRuleName( ruleName1 );
- lr1.setOrderNumber( 0 );
- LiteralRestriction lr2 = new LiteralRestriction();
- lr2.setRuleName( ruleName2 );
- lr2.setOrderNumber( 0 );
- LiteralRestriction lr3 = new LiteralRestriction();
- lr3.setRuleName( ruleName2 );
- lr3.setOrderNumber( 1 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setPatternGuid( p1.getGuid() );
- pp1.setRuleName( ruleName1 );
- pp1.add( lr1 );
-
- SubPattern pp2 = new SubPattern();
- pp2.setPatternGuid( p2.getGuid() );
- pp2.setRuleName( ruleName2 );
- pp2.add( lr2 );
- pp2.add( lr3 );
-
- Redundancy r1 = new Redundancy( lr1,
- lr2 );
- Redundancy r2 = new Redundancy( p1,
- p2 );
-
- data.add( p1 );
- data.add( p2 );
- data.add( lr1 );
- data.add( lr2 );
- data.add( lr3 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( r1 );
- data.add( r2 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- pp1,
- pp2 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-
- public void testSubPatternRedundancy2() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant pattern possibilities" ) );
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- /*
- * Not redundant patterns
- *
- * For example: Pattern ( a==1, b==1, c==1) and Pattern ( a==1, c==1)
- */
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- Pattern p1 = new Pattern();
- p1.setRuleName( ruleName1 );
- Pattern p2 = new Pattern();
- p2.setRuleName( ruleName2 );
-
- LiteralRestriction lr1 = new LiteralRestriction();
- lr1.setRuleName( ruleName1 );
- lr1.setOrderNumber( 0 );
- LiteralRestriction lr2 = new LiteralRestriction();
- lr2.setRuleName( ruleName2 );
- lr2.setOrderNumber( 0 );
- LiteralRestriction lr3 = new LiteralRestriction();
- lr3.setRuleName( ruleName2 );
- lr3.setOrderNumber( 1 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setPatternGuid( p1.getGuid() );
- pp1.setRuleName( ruleName1 );
- pp1.add( lr1 );
-
- SubPattern pp2 = new SubPattern();
- pp2.setPatternGuid( p2.getGuid() );
- pp2.setRuleName( ruleName2 );
- pp2.add( lr2 );
- pp2.add( lr3 );
-
- Redundancy r1 = new Redundancy( lr1,
- lr3 );
- Redundancy r2 = new Redundancy( p1,
- p2 );
-
- data.add( p1 );
- data.add( p2 );
- data.add( lr1 );
- data.add( lr2 );
- data.add( lr3 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( r1 );
- data.add( r2 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertFalse( TestBase.causeMapContains( map,
- pp1,
- pp2 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-
- public void testSubRuleRedundancy1() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities" ) );
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- /*
- * First rules. These are subsumptant,
- */
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- VerifierRule r1 = new VerifierRule();
- r1.setRuleName( ruleName1 );
- VerifierRule r2 = new VerifierRule();
- r2.setRuleName( ruleName2 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setRuleName( ruleName1 );
- SubPattern pp2 = new SubPattern();
- pp2.setRuleName( ruleName2 );
- SubPattern pp3 = new SubPattern();
- pp3.setRuleName( ruleName2 );
-
- SubRule rp1 = new SubRule();
- rp1.setRuleGuid( r1.getGuid() );
- rp1.setRuleName( ruleName1 );
- rp1.add( pp1 );
-
- SubRule rp2 = new SubRule();
- rp2.setRuleGuid( r2.getGuid() );
- rp2.setRuleName( ruleName2 );
- rp2.add( pp2 );
- rp2.add( pp3 );
-
- Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
- pp1,
- pp2 );
- Redundancy ruleRedundancy = new Redundancy( r1,
- r2 );
-
- data.add( r1 );
- data.add( r2 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( pp3 );
- data.add( possibilityredundancy );
- data.add( ruleRedundancy );
- data.add( rp1 );
- data.add( rp2 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- rp1,
- rp2 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-
- public void testSubRuleRedundancy2() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Possibilities.drl" ) );
-
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant rule possibilities" ) );
- // session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- // "XXX: test rule"));
-
- Collection<Object> data = new ArrayList<Object>();
-
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
-
- /*
- * First rules. These are subsumptant,
- */
- String ruleName1 = "Rule 1";
- String ruleName2 = "Rule 2";
-
- VerifierRule r1 = new VerifierRule();
- r1.setRuleName( ruleName1 );
- VerifierRule r2 = new VerifierRule();
- r2.setRuleName( ruleName2 );
-
- SubPattern pp1 = new SubPattern();
- pp1.setRuleName( ruleName1 );
- SubPattern pp2 = new SubPattern();
- pp2.setRuleName( ruleName1 );
- SubPattern pp3 = new SubPattern();
- pp3.setRuleName( ruleName2 );
- SubPattern pp4 = new SubPattern();
- pp4.setRuleName( ruleName2 );
-
- SubRule rp1 = new SubRule();
- rp1.setRuleGuid( r1.getGuid() );
- rp1.setRuleName( ruleName1 );
- rp1.add( pp1 );
- rp1.add( pp2 );
-
- SubRule rp2 = new SubRule();
- rp2.setRuleGuid( r2.getGuid() );
- rp2.setRuleName( ruleName2 );
- rp2.add( pp3 );
- rp2.add( pp4 );
-
- Redundancy possibilityredundancy = new Redundancy( RedundancyType.STRONG,
- pp1,
- pp3 );
- Subsumption possibilitysubsupmtion = new Subsumption( pp2,
- pp4 );
- Redundancy ruleRedundancy = new Redundancy( r1,
- r2 );
-
- data.add( r1 );
- data.add( r2 );
- data.add( pp1 );
- data.add( pp2 );
- data.add( pp3 );
- data.add( possibilityredundancy );
- data.add( possibilitysubsupmtion );
- data.add( ruleRedundancy );
- data.add( rp1 );
- data.add( rp2 );
-
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- rp1,
- rp2 ) );
- assertTrue( TestBase.causeMapContains( map,
- pp2,
- pp4 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
- }
-}
Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantRestrictionsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,190 +1,99 @@
package org.drools.verifier.subsumption;
-import java.util.ArrayList;
import java.util.Collection;
-import java.util.Map;
-import java.util.Set;
-import org.drools.StatelessSession;
-import org.drools.StatelessSessionResult;
-import org.drools.base.RuleNameMatchesAgendaFilter;
-import org.drools.base.evaluators.Operator;
-import org.drools.verifier.TestBase;
-import org.drools.verifier.components.Field;
-import org.drools.verifier.components.LiteralRestriction;
-import org.drools.verifier.data.VerifierReport;
-import org.drools.verifier.data.VerifierReportFactory;
-import org.drools.verifier.report.components.Cause;
+import junit.framework.TestCase;
-public class SubsumptantRestrictionsTest extends SubsumptionTestBase {
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.Subsumption;
- public void testRestrictionRedundancyGreater() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
+public class SubsumptantRestrictionsTest extends TestCase {
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant restrictions, greater than" ) );
+ public void testVerifierLiteralRestrictionRedundancy1() throws Exception {
- Collection<Object> data = new ArrayList<Object>();
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
+ Verifier verifier = vBuilder.newVerifier();
- /*
- * Redundant restrictions
- */
- // Doubles
- Field field1 = new Field();
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction1.drl",
+ getClass() ),
+ ResourceType.DRL );
- LiteralRestriction lr1 = new LiteralRestriction();
- lr1.setOrderNumber( 0 );
- lr1.setFieldGuid( field1.getGuid() );
- lr1.setValue( "1.0" );
- lr1.setOperator( Operator.GREATER );
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
- LiteralRestriction lr2 = new LiteralRestriction();
- lr2.setOrderNumber( 1 );
- lr2.setFieldGuid( field1.getGuid() );
- lr2.setValue( "2.0" );
- lr2.setOperator( Operator.GREATER );
+ assertFalse( verifier.hasErrors() );
- // Integers
- Field field2 = new Field();
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
- LiteralRestriction lr3 = new LiteralRestriction();
- lr3.setOrderNumber( 0 );
- lr3.setFieldGuid( field2.getGuid() );
- lr3.setValue( "1" );
- lr3.setOperator( Operator.GREATER );
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
- LiteralRestriction lr4 = new LiteralRestriction();
- lr4.setOrderNumber( 1 );
- lr4.setFieldGuid( field2.getGuid() );
- lr4.setValue( "2" );
- lr4.setOperator( Operator.GREATER_OR_EQUAL );
+ assertEquals( 9,
+ subsumptionList.size() );
- // Dates
- Field field3 = new Field();
+ verifier.dispose();
+ }
- LiteralRestriction lr5 = new LiteralRestriction();
- lr5.setOrderNumber( 0 );
- lr5.setFieldGuid( field3.getGuid() );
- lr5.setValue( "10-dec-2005" );
- lr5.setOperator( Operator.GREATER );
+ public void testVerifierLiteralRestrictionRedundancy2() throws Exception {
- LiteralRestriction lr6 = new LiteralRestriction();
- lr6.setOrderNumber( 1 );
- lr6.setFieldGuid( field3.getGuid() );
- lr6.setValue( "10-dec-2008" );
- lr6.setOperator( Operator.EQUAL );
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
- data.add( lr1 );
- data.add( lr2 );
- data.add( lr3 );
- data.add( lr4 );
- data.add( lr5 );
- data.add( lr6 );
+ Verifier verifier = vBuilder.newVerifier();
- StatelessSessionResult sessionResult = session.executeWithResults( data );
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction2.drl",
+ getClass() ),
+ ResourceType.DRL );
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- lr1,
- lr2 ) );
- assertTrue( TestBase.causeMapContains( map,
- lr3,
- lr4 ) );
- assertTrue( TestBase.causeMapContains( map,
- lr5,
- lr6 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
}
- }
- public void testRestrictionRedundancyLess() throws Exception {
- StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
+ assertFalse( verifier.hasErrors() );
- session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Find subsumptant restrictions, less than" ) );
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
- Collection<Object> data = new ArrayList<Object>();
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
- VerifierReport result = VerifierReportFactory.newVerifierReport();
- session.setGlobal( "result",
- result );
+ assertEquals( 9,
+ subsumptionList.size() );
- /*
- * Redundant restrictions
- */
- // Doubles
- Field field1 = new Field();
+ verifier.dispose();
+ }
- LiteralRestriction lr1 = new LiteralRestriction();
- lr1.setOrderNumber( 0 );
- lr1.setFieldGuid( field1.getGuid() );
- lr1.setValue( "2.0" );
- lr1.setOperator( Operator.LESS );
+ public void testVerifierLiteralRestrictionRedundancy3() throws Exception {
- LiteralRestriction lr2 = new LiteralRestriction();
- lr2.setOrderNumber( 1 );
- lr2.setFieldGuid( field1.getGuid() );
- lr2.setValue( "1.0" );
- lr2.setOperator( Operator.LESS );
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
- // Integers
- Field field2 = new Field();
+ Verifier verifier = vBuilder.newVerifier();
- LiteralRestriction lr3 = new LiteralRestriction();
- lr3.setOrderNumber( 0 );
- lr3.setFieldGuid( field2.getGuid() );
- lr3.setValue( "2" );
- lr3.setOperator( Operator.LESS );
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantRestriction3.drl",
+ getClass() ),
+ ResourceType.DRL );
- LiteralRestriction lr4 = new LiteralRestriction();
- lr4.setOrderNumber( 1 );
- lr4.setFieldGuid( field2.getGuid() );
- lr4.setValue( "1" );
- lr4.setOperator( Operator.LESS_OR_EQUAL );
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
- // Dates
- Field field3 = new Field();
+ assertFalse( verifier.hasErrors() );
- LiteralRestriction lr5 = new LiteralRestriction();
- lr5.setOrderNumber( 0 );
- lr5.setFieldGuid( field3.getGuid() );
- lr5.setValue( "10-dec-2008" );
- lr5.setOperator( Operator.LESS );
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
- LiteralRestriction lr6 = new LiteralRestriction();
- lr6.setOrderNumber( 1 );
- lr6.setFieldGuid( field3.getGuid() );
- lr6.setValue( "10-dec-2005" );
- lr6.setOperator( Operator.EQUAL );
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
- data.add( lr1 );
- data.add( lr2 );
- data.add( lr3 );
- data.add( lr4 );
- data.add( lr5 );
- data.add( lr6 );
+ assertEquals( 6,
+ subsumptionList.size() );
- StatelessSessionResult sessionResult = session.executeWithResults( data );
-
- Map<Cause, Set<Cause>> map = createSubsumptionMap( sessionResult.iterateObjects() );
-
- assertTrue( TestBase.causeMapContains( map,
- lr1,
- lr2 ) );
- assertTrue( TestBase.causeMapContains( map,
- lr3,
- lr4 ) );
- assertTrue( TestBase.causeMapContains( map,
- lr5,
- lr6 ) );
-
- if ( !map.isEmpty() ) {
- fail( "More redundancies than was expected." );
- }
+ verifier.dispose();
}
}
Copied: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java (from rev 30137, labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantPossibilitiesTest.java)
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubPatternsTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,206 @@
+package org.drools.verifier.subsumption;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantSubPatternsTest extends TestCase {
+
+ public void testSubpatternSubsumption1() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns1.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ // System.out.println( " ** " + ((SubPattern) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubPattern) ((Subsumption) object).getRight()).getItems() );
+ count++;
+ }
+ }
+ assertEquals( 1,
+ count );
+
+ verifier.dispose();
+ }
+
+ /**
+ * Empty pattern
+ * @throws Exception
+ */
+ public void testSubpatternSubsumption2() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns2.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ count++;
+ }
+ }
+ assertEquals( 1,
+ count );
+
+ verifier.dispose();
+ }
+
+ /**
+ * Different sources
+ * @throws Exception
+ */
+ public void testSubpatternSubsumption3() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns3.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ count++;
+ }
+ }
+ assertEquals( 1,
+ count );
+
+ verifier.dispose();
+ }
+
+ /**
+ * Patterns that use from
+ * @throws Exception
+ */
+ public void FIXMEtestSubpatternSubsumption4() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns4.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ count++;
+ }
+ }
+ assertEquals( 1,
+ count );
+
+ verifier.dispose();
+ }
+
+ /**
+ * Different sources
+ * @throws Exception
+ */
+ public void testSubpatternSubsumption5() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns5.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ count++;
+ }
+ }
+ assertEquals( 8,
+ count );
+
+ verifier.dispose();
+ }
+}
Added: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptantSubRulesTest.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,168 @@
+package org.drools.verifier.subsumption;
+
+import java.util.Collection;
+
+import junit.framework.TestCase;
+
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
+import org.drools.verifier.Verifier;
+import org.drools.verifier.VerifierError;
+import org.drools.verifier.builder.VerifierBuilder;
+import org.drools.verifier.builder.VerifierBuilderFactory;
+import org.drools.verifier.builder.VerifierImpl;
+import org.drools.verifier.report.components.CauseType;
+import org.drools.verifier.report.components.Subsumption;
+
+public class SubsumptantSubRulesTest extends TestCase {
+
+ public void testSubruleSubsumption1() throws Exception {
+
+ VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+ Verifier verifier = vBuilder.newVerifier();
+
+ verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubRules1.drl",
+ getClass() ),
+ ResourceType.DRL );
+
+ for ( VerifierError error : verifier.getErrors() ) {
+ System.out.println( error.getMessage() );
+ }
+
+ assertFalse( verifier.hasErrors() );
+
+ boolean noProblems = verifier.fireAnalysis();
+ assertTrue( noProblems );
+
+ Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+
+ int count = 0;
+ for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_RULE ) ) {
+ // System.out.println( " ** " + ((SubRule) ((Subsumption) object).getLeft()).getItems() + " - " + ((SubRule) ((Subsumption) object).getRight()).getItems() );
+ count++;
+ }
+ }
+ assertEquals( 2,
+ count );
+
+ verifier.dispose();
+ }
+
+ // /**
+ // * Empty pattern
+ // * @throws Exception
+ // */
+ // public void testSubpatternSubsumption2() throws Exception {
+ //
+ // VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+ //
+ // Verifier verifier = vBuilder.newVerifier();
+ //
+ // verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns2.drl",
+ // getClass() ),
+ // ResourceType.DRL );
+ //
+ // for ( VerifierError error : verifier.getErrors() ) {
+ // System.out.println( error.getMessage() );
+ // }
+ //
+ // assertFalse( verifier.hasErrors() );
+ //
+ // boolean noProblems = verifier.fireAnalysis();
+ // assertTrue( noProblems );
+ //
+ // Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+ //
+ // int count = 0;
+ // for ( Object object : subsumptionList ) {
+ // // System.out.println( " * " + ((Subsumption) object) );
+ // if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ // count++;
+ // }
+ // }
+ // assertEquals( 1,
+ // count );
+ //
+ // verifier.dispose();
+ // }
+ //
+ // /**
+ // * Different sources
+ // * @throws Exception
+ // */
+ // public void testSubpatternSubsumption3() throws Exception {
+ //
+ // VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+ //
+ // Verifier verifier = vBuilder.newVerifier();
+ //
+ // verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns3.drl",
+ // getClass() ),
+ // ResourceType.DRL );
+ //
+ // for ( VerifierError error : verifier.getErrors() ) {
+ // System.out.println( error.getMessage() );
+ // }
+ //
+ // assertFalse( verifier.hasErrors() );
+ //
+ // boolean noProblems = verifier.fireAnalysis();
+ // assertTrue( noProblems );
+ //
+ // Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+ //
+ // int count = 0;
+ // for ( Object object : subsumptionList ) {
+ // // System.out.println( " * " + ((Subsumption) object) );
+ // if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ // count++;
+ // }
+ // }
+ // assertEquals( 1,
+ // count );
+ //
+ // verifier.dispose();
+ // }
+ //
+ // /**
+ // * Patterns that use from
+ // * @throws Exception
+ // */
+ // public void FIXMEtestSubpatternSubsumption4() throws Exception {
+ //
+ // VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+ //
+ // Verifier verifier = vBuilder.newVerifier();
+ //
+ // verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "SubsumptantSubPatterns4.drl",
+ // getClass() ),
+ // ResourceType.DRL );
+ //
+ // for ( VerifierError error : verifier.getErrors() ) {
+ // System.out.println( error.getMessage() );
+ // }
+ //
+ // assertFalse( verifier.hasErrors() );
+ //
+ // boolean noProblems = verifier.fireAnalysis();
+ // assertTrue( noProblems );
+ //
+ // Collection<Object> subsumptionList = ((VerifierImpl) verifier).getKnowledgeSession().getObjects( new ClassObjectFilter( Subsumption.class ) );
+ //
+ // int count = 0;
+ // for ( Object object : subsumptionList ) {
+ // System.out.println( " * " + ((Subsumption) object) );
+ // if ( ((Subsumption) object).getLeft().getCauseType().equals( CauseType.SUB_PATTERN ) ) {
+ // count++;
+ // }
+ // }
+ // assertEquals( 1,
+ // count );
+ //
+ // verifier.dispose();
+ // }
+}
Deleted: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java 2009-12-02 09:10:23 UTC (rev 30432)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/subsumption/SubsumptionTestBase.java 2009-12-02 11:15:59 UTC (rev 30433)
@@ -1,56 +0,0 @@
-package org.drools.verifier.subsumption;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.drools.verifier.TestBase;
-import org.drools.verifier.report.components.Cause;
-import org.drools.verifier.report.components.Redundancy;
-import org.drools.verifier.report.components.Subsumption;
-
-/**
- *
- * @author Toni Rikkola
- *
- */
-public class SubsumptionTestBase extends TestBase {
-
- public void testDummy() {
- // this is needed as eclipse will try to run this and produce a failure
- // if its not here.
- }
-
- /**
- * Creates subsumption map from Subsumption objects, one rule may have
- * several subsumption dependencies.
- *
- * @param iter
- * @return
- */
- protected Map<Cause, Set<Cause>> createSubsumptionMap(Iterator<Object> iter) {
-
- Map<Cause, Set<Cause>> map = new HashMap<Cause, Set<Cause>>();
- while (iter.hasNext()) {
- Object o = (Object) iter.next();
- if (o instanceof Subsumption && !(o instanceof Redundancy)) {
- Subsumption s = (Subsumption) o;
- Cause left = s.getLeft();
- Cause right = s.getRight();
-
- if (map.containsKey(left)) {
- Set<Cause> set = map.get(left);
- set.add(right);
- } else {
- Set<Cause> set = new HashSet<Cause>();
- set.add(right);
- map.put(left, set);
- }
- }
- }
-
- return map;
- }
-}
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/equivalence/EquivalentRules.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package com.sample
+
+rule "Test 1"
+ when
+ Person(
+ name == "Toni"
+ )
+ then
+ System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+ when
+ Person(
+ name == "Toni"
+ )
+ then
+ System.out.println( "Test 2" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/misc/SubPattern.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,27 @@
+package org.drools.verifier.misc;
+
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo(
+ a > 10,
+ a > 100,
+ b == 1
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRestrictions.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,11 @@
+package com.sample
+
+rule "Test"
+ when
+ Person(
+ name == "Toni",
+ name == "Toni"
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/redundancy/RedundantRules1.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,19 @@
+package com.sample
+
+rule "Test 1"
+ when
+ Person(
+ name == "Toni"
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Person(
+ name == "Toni"
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction1.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo(
+ a > 10,
+ a > 100,
+ b == 1
+ )
+ then
+ System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test 2" );
+end
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction2.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo(
+ a < 10,
+ a < 100,
+ b == 1
+ )
+ then
+ System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a < 10,
+ a < 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test 2" );
+end
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantRestriction3.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,25 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo(
+ a == 10,
+ a == 100,
+ b == 1
+ )
+ then
+ System.out.println( "Test 1" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a == 10,
+ a == 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test 2" );
+end
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns1.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,32 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 11"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 22"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 33"
+ when
+ Bar(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns2.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,27 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo( )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 3"
+ when
+ Bar()
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns3.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,35 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ Foo( ) from entry-point "test"
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ ) from entry-point "test"
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 3"
+ when
+ Foo( )
+ then
+ System.out.println( "Test" );
+end
+
+
+rule "Test x"
+ when
+ Bar()
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns4.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,42 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+rule "Test 1"
+ when
+ list :List()
+ Foo() from list.items
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ list :List()
+ Foo(
+ a > 10
+ ) from list.items
+ Foo(
+ a > 100
+ ) from list.items
+ then
+ System.out.println( "Test" );
+end
+/*
+rule "Test 3"
+ when
+ list2 :List2()
+ Foo(
+ a > 10
+ ) from list2.items
+ then
+ System.out.println( "Test" );
+end
+*/
+
+rule "Test x"
+ when
+ Bar()
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubPatterns5.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,57 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+
+#
+# Something
+#
+rule "Test 1"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 1 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 3"
+ when
+ Bar(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/subsumption/SubsumptantSubRules1.drl 2009-12-02 11:15:59 UTC (rev 30433)
@@ -0,0 +1,57 @@
+package com.sample
+
+import com.sample.DroolsTest.Message;
+
+
+#
+# Something
+#
+rule "Test 1"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 1 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 2 GG"
+ ruleflow-group "GG"
+ when
+ Foo(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Test 3"
+ when
+ Bar(
+ a > 10,
+ b == 2
+ )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list