[jboss-svn-commits] JBL Code SVN: r7831 - in labs/jbossrules/trunk/drools-analytics/src: . main/java/org/drools/analytics main/resources test test/java test/java/org test/java/org/drools test/java/org/drools/analytics

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Nov 25 17:29:24 EST 2006


Author: michael.neale at jboss.com
Date: 2006-11-25 17:29:17 -0500 (Sat, 25 Nov 2006)
New Revision: 7831

Added:
   labs/jbossrules/trunk/drools-analytics/src/test/
   labs/jbossrules/trunk/drools-analytics/src/test/java/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/
   labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java
Modified:
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
   labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
   labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
Log:
added tests and some more analysis

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java	2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/AnalysisResult.java	2006-11-25 22:29:17 UTC (rev 7831)
@@ -30,6 +30,10 @@
         errors.add( new ReportItem(k.getRule().getName(), message) );
     }
     
+    public List getWarnings() {
+        return warnings;
+    }
+    
     static class ReportItem implements Serializable {
         private static final long serialVersionUID = 3674119457586457238L;
         public String rule;
@@ -44,5 +48,9 @@
             return rule + ": " + message;
         }
     }
+
+    public List getErrors() {
+        return errors;
+    }
     
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java	2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Pattern.java	2006-11-25 22:29:17 UTC (rev 7831)
@@ -6,4 +6,25 @@
     public String objectType;
     public Constraint[] constraints;
     
+    
+    
+    public Constraint[] getConstraints() {
+        return constraints;
+    }
+    public void setConstraints(Constraint[] constraints) {
+        this.constraints = constraints;
+    }
+    public String getId() {
+        return id;
+    }
+    public void setId(String id) {
+        this.id = id;
+    }
+    public String getObjectType() {
+        return objectType;
+    }
+    public void setObjectType(String objectType) {
+        this.objectType = objectType;
+    }
+    
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java	2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/java/org/drools/analytics/Rule.java	2006-11-25 22:29:17 UTC (rev 7831)
@@ -6,4 +6,31 @@
     public String name;
     public Pattern[] patterns;
     public String rhs;
+    
+    private int salienceValue;
+    
+    public String getName() {
+        return name;
+    }
+    public void setName(String name) {
+        this.name = name;
+    }
+    public Pattern[] getPatterns() {
+        return patterns;
+    }
+    public void setPatterns(Pattern[] patterns) {
+        this.patterns = patterns;
+    }
+    public String getRhs() {
+        return rhs;
+    }
+    public void setRhs(String rhs) {
+        this.rhs = rhs;
+    }
+    public int getSalienceValue() {
+        return salienceValue;
+    }
+    public void setSalienceValue(int salience) {
+        this.salienceValue = salience;
+    }
 }

Modified: labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl	2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/main/resources/StaticQualityAnalysis.drl	2006-11-25 22:29:17 UTC (rev 7831)
@@ -50,7 +50,6 @@
 
 rule "same field with conflicting constraints on the one Rule - impossible to satisfy"
 	when
-		constraint: Constraint(  )
 	then
 end	
 
@@ -92,9 +91,9 @@
 
 rule "No action - possibly commented out"
 	when
-		
+		r: Rule(rhs == "") 
 	then
-		
+		result.addWarning(drools, "This rule has no action: " + r.getName());
 end
 
 rule "Less restrictive constraint first"
@@ -104,3 +103,20 @@
 	then
 		
 end
+
+rule "Excessive use of salience"
+	when
+		not Rule(salienceValue == 0) 
+	then
+		result.addWarning(drools, "Salience is being used heavily, if possible, consider using agenda groups to break up the rule package.");		
+end
+
+
+
+
+rule "Only a few values of salience - consider using agenda-groups"
+	when
+		//when agenda groups would be better for controlling the flow in phases then salience.
+	then
+		
+end

Added: labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java	2006-11-25 18:52:26 UTC (rev 7830)
+++ labs/jbossrules/trunk/drools-analytics/src/test/java/org/drools/analytics/BasicTest.java	2006-11-25 22:29:17 UTC (rev 7831)
@@ -0,0 +1,147 @@
+package org.drools.analytics;
+
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+import org.drools.CheckedDroolsException;
+import org.drools.RuleBase;
+import org.drools.WorkingMemory;
+import org.drools.compiler.RuleBaseLoader;
+
+import junit.framework.TestCase;
+
+public class BasicTest extends TestCase {
+
+    public void testLessThan() throws Exception {
+        Rule rule = new Rule();
+        
+        Constraint con = new Constraint();
+        con.setField( "foo" );
+        con.setObjectType( "Bar" );
+        con.setOperator( "<" );
+        con.setRuleName( "xxx" );
+        
+        WorkingMemory wm = getAnalysisEngine();
+        
+        AnalysisResult result = new AnalysisResult();
+        wm.setGlobal( "result", result );        
+        wm.assertObject( con );
+        wm.assertObject( rule );
+        
+        wm.fireAllRules();
+        
+        assertEquals(1, result.getWarnings().size());
+        assertEquals(0, result.getErrors().size());        
+    }
+    
+    public void testLessThanMultiple() throws Exception {
+        final Constraint con = new Constraint();
+        con.setField( "foo" );
+        con.setObjectType( "Bar" );
+        con.setOperator( "<" );
+        con.setRuleName( "xxx" );
+        
+        Constraint con2 = new Constraint();
+        con2.setField( "foo2" );
+        con2.setObjectType( "Bar" );
+        con2.setOperator( "<" );
+        con2.setRuleName( "zar" );
+        
+        
+        WorkingMemory wm = getAnalysisEngine();
+        
+        AnalysisResult result = new AnalysisResult();
+        wm.setGlobal( "result", result );        
+        wm.assertObject( con );
+        wm.assertObject( con2 );
+        wm.assertObject( new Rule() );
+        wm.fireAllRules();
+        
+        assertEquals(2, result.getWarnings().size());
+        assertEquals(0, result.getErrors().size());        
+    }    
+    
+    public void testLessThanMultiple2() throws Exception {
+        final Constraint con = new Constraint();
+        con.setField( "foo" );
+        con.setObjectType( "Bar" );
+        con.setOperator( "<" );
+        con.setRuleName( "xxx" );
+        
+        Constraint con2 = new Constraint();
+        con2.setField( "foo2" );
+        con2.setObjectType( "Bar" );
+        con2.setOperator( "<" );
+        con2.setRuleName( "xxx" );
+        
+        
+        WorkingMemory wm = getAnalysisEngine();
+        
+        AnalysisResult result = new AnalysisResult();
+        wm.setGlobal( "result", result );        
+        wm.assertObject( con );
+        wm.assertObject( con2 );
+        wm.assertObject( new Rule() );
+        
+        wm.fireAllRules();
+        
+        assertEquals(2, result.getWarnings().size());
+        assertEquals(0, result.getErrors().size());        
+    }       
+
+    private WorkingMemory getAnalysisEngine() throws CheckedDroolsException,
+                                             IOException {
+        Reader r = new InputStreamReader(this.getClass().getResourceAsStream( "/StaticQualityAnalysis.drl" ));
+        RuleBase rb = RuleBaseLoader.getInstance().loadFromReader( r );
+        WorkingMemory wm = rb.newWorkingMemory();
+        return wm;
+    }
+    
+    public void testLessThanOK() throws Exception {
+        Constraint con = new Constraint();
+        con.setField( "foo" );
+        con.setObjectType( "Bar" );
+        con.setOperator( "<" );
+        con.setRuleName( "xxx" );
+        
+        Constraint con2 = new Constraint();
+        con2.setField( "foo" );
+        con2.setObjectType( "Bar" );
+        con2.setOperator( ">=" );
+        con2.setRuleName( "xxx2" );
+        
+        
+        WorkingMemory wm = getAnalysisEngine();
+        
+        AnalysisResult result = new AnalysisResult();
+        wm.setGlobal( "result", result );        
+        
+        wm.assertObject( con );
+        wm.assertObject( con2 );
+        wm.assertObject( new Rule() );
+        
+        wm.fireAllRules();
+        
+        assertEquals(0, result.getWarnings().size());
+        assertEquals(0, result.getErrors().size());          
+    }
+    
+    public void testNoRHS() throws Exception {
+        WorkingMemory wm = getAnalysisEngine();
+        
+        Rule r = new Rule();
+        r.setRhs( "" );
+        
+        AnalysisResult result = new AnalysisResult();
+        
+        wm.setGlobal( "result", result );
+        
+        wm.assertObject( r );
+        
+        wm.fireAllRules();
+        
+        assertEquals(1, result.getWarnings().size());
+    }
+    
+}




More information about the jboss-svn-commits mailing list