[jboss-svn-commits] JBL Code SVN: r33281 - in labs/jbossrules/trunk/drools-verifier/src: main/resources/org/drools/verifier/opposites and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Jun 1 07:44:16 EDT 2010


Author: Rikkola
Date: 2010-06-01 07:44:15 -0400 (Tue, 01 Jun 2010)
New Revision: 33281

Added:
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/alwaysFalse/
   labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/alwaysFalse/AlwaysFalseTest.drl
Modified:
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/alwaysFalse/AlwaysFalseTest.java
   labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java
Log:
JBRULES-2344 : Pattern analysis can never be satisfied, however the rule is logically correct

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl	2010-06-01 11:09:03 UTC (rev 33280)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/incompatibility/Restrictions.drl	2010-06-01 11:44:15 UTC (rev 33281)
@@ -79,7 +79,7 @@
 			valueType == $r1.valueType,
 			operator == Operator.GREATER,
 			path != $r1.path,
-			valueAsString == valueAsString
+			valueAsString == $r1.valueAsString
 		)
 
 	then

Modified: labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	2010-06-01 11:09:03 UTC (rev 33280)
+++ labs/jbossrules/trunk/drools-verifier/src/main/resources/org/drools/verifier/opposites/Restrictions.drl	2010-06-01 11:44:15 UTC (rev 33281)
@@ -132,7 +132,7 @@
 # Dependencies: None
 # Example: Pattern( a < 10 && a > 9 )
 #
-rule "Opposite LiteralRestrictions with ranges, less - greater for ints and dates"
+rule "Opposite LiteralRestrictions with ranges, less - greater for numbers"
 	when
 		$left :NumberRestriction(
 			operator == Operator.LESS,
@@ -145,7 +145,7 @@
 			valueType == $left.valueType,
 			operator == Operator.GREATER,
 			path != $left.path,
-			value < $left.value
+			value > $left.value
 		)
 		
 		# Check that there is not already a pair with these values.

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/alwaysFalse/AlwaysFalseTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/alwaysFalse/AlwaysFalseTest.java	2010-06-01 11:09:03 UTC (rev 33280)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/alwaysFalse/AlwaysFalseTest.java	2010-06-01 11:44:15 UTC (rev 33281)
@@ -6,8 +6,16 @@
 
 import org.drools.StatelessSession;
 import org.drools.base.RuleNameMatchesAgendaFilter;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.runtime.ClassObjectFilter;
 import org.drools.verifier.TestBase;
+import org.drools.verifier.Verifier;
 import org.drools.verifier.VerifierComponentMockFactory;
+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.components.LiteralRestriction;
 import org.drools.verifier.components.Pattern;
 import org.drools.verifier.components.SubPattern;
@@ -18,6 +26,8 @@
 import org.drools.verifier.data.VerifierReport;
 import org.drools.verifier.data.VerifierReportFactory;
 import org.drools.verifier.report.components.Incompatibility;
+import org.drools.verifier.report.components.MessageType;
+import org.drools.verifier.report.components.Overlap;
 import org.drools.verifier.report.components.Severity;
 import org.drools.verifier.report.components.VerifierMessage;
 import org.drools.verifier.report.components.VerifierMessageBase;
@@ -277,4 +287,42 @@
                       result.getBySeverity( Severity.NOTE ).size() );
         assertTrue( works );
     }
+
+    public void testAlwaysFalse() {
+        VerifierBuilder vBuilder = VerifierBuilderFactory.newVerifierBuilder();
+
+        Verifier verifier = vBuilder.newVerifier();
+
+        verifier.addResourcesToVerify( ResourceFactory.newClassPathResource( "AlwaysFalseTest.drl",
+                                                                             getClass() ),
+                                       ResourceType.DRL );
+
+        assertFalse( verifier.hasErrors() );
+
+        boolean noProblems = verifier.fireAnalysis();
+        assertTrue( noProblems );
+
+        Collection<VerifierMessageBase> notes = verifier.getResult().getBySeverity( Severity.ERROR );
+
+        assertEquals( 1,
+                      containsMessageType( notes,
+                                           MessageType.ALWAYS_FALSE ) );
+
+        verifier.dispose();
+    }
+
+    private int containsMessageType(Collection<VerifierMessageBase> notes,
+                                    MessageType type) {
+        int amount = 0;
+        for ( VerifierMessageBase note : notes ) {
+            if ( note instanceof VerifierMessage ) {
+                VerifierMessage message = (VerifierMessage) note;
+                if ( message.getMessageType() == type ) {
+                    amount++;
+                }
+            }
+        }
+        return amount;
+    }
+
 }
\ No newline at end of file

Modified: labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java	2010-06-01 11:09:03 UTC (rev 33280)
+++ labs/jbossrules/trunk/drools-verifier/src/test/java/org/drools/verifier/opposites/OppositeRestrictionsTest.java	2010-06-01 11:44:15 UTC (rev 33281)
@@ -179,46 +179,7 @@
         }
     }
 
-    public void testLiteralRestrictionOppositeWithRangesLessAndGreaterForIntsAndDates() throws Exception {
-        StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
 
-        session.setAgendaFilter( new RuleNameMatchesAgendaFilter( "Opposite LiteralRestrictions with ranges, less - greater for ints and dates" ) );
-
-        Collection<Object> data = new ArrayList<Object>();
-
-        Pattern pattern = VerifierComponentMockFactory.createPattern1();
-
-        LiteralRestriction r1 = LiteralRestriction.createRestriction( pattern,
-                                                                      "0" );
-        r1.setFieldPath( "0" );
-        r1.setOperator( Operator.GREATER );
-        r1.setOrderNumber( 0 );
-
-        LiteralRestriction r2 = LiteralRestriction.createRestriction( pattern,
-                                                                      "1" );
-        r2.setFieldPath( "0" );
-        r2.setOperator( Operator.LESS );
-        r2.setOrderNumber( 1 );
-
-        data.add( r1 );
-        data.add( r2 );
-
-        StatelessSessionResult sessionResult = session.executeWithResults( data );
-
-        Map<Cause, Set<Cause>> map = createOppositesMap( VerifierComponentType.RESTRICTION,
-                                                         sessionResult.iterateObjects() );
-
-        assertTrue( (TestBase.causeMapContains( map,
-                                                r1,
-                                                r2 ) ^ TestBase.causeMapContains( map,
-                                                                                  r2,
-                                                                                  r1 )) );
-
-        if ( !map.isEmpty() ) {
-            fail( "More opposites than was expected." );
-        }
-    }
-
     public void testLiteralRestrictionOppositeWithRangesLessOrEqualAndGreaterOrEqualForIntsAndDates() throws Exception {
         StatelessSession session = getStatelessSession( this.getClass().getResourceAsStream( "Restrictions.drl" ) );
 

Added: labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/alwaysFalse/AlwaysFalseTest.drl
===================================================================
--- labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/alwaysFalse/AlwaysFalseTest.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-verifier/src/test/resources/org/drools/verifier/alwaysFalse/AlwaysFalseTest.drl	2010-06-01 11:44:15 UTC (rev 33281)
@@ -0,0 +1,22 @@
+package com.misc.someData
+
+import com.sample.DroolsTest.Message;
+
+rule "Persons age, OK"
+	when
+		Person( 
+			age > 0,
+			age < 20
+		)
+	then
+end
+
+rule "Persons age, FAIL"
+	when
+		Person( 
+			# Can't be under 0 and over 20
+			age < 0,
+			age > 20
+		)
+	then
+end
\ No newline at end of file



More information about the jboss-svn-commits mailing list