[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