[jboss-svn-commits] JBL Code SVN: r15375 - in labs/jbossrules/trunk/experimental/drools-analytics/src: main/java/org/drools/analytics/dao and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Sep 26 04:47:48 EDT 2007
Author: Rikkola
Date: 2007-09-26 04:47:48 -0400 (Wed, 26 Sep 2007)
New Revision: 15375
Added:
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl
Modified:
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl
labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl
Log:
covered range x == y now produces missing ranges x > y and x < y, if they are missing.
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/PackageDescrFlattener.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -355,7 +355,7 @@
private int flatten(PatternDescr descr) {
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
- AnalyticsClass clazz = data.getClassByName(descr.getObjectType());
+ AnalyticsClass clazz = data.getClassByPackageAndName(descr.getObjectType());
if (clazz == null) {
clazz = new AnalyticsClass();
clazz.setName(descr.getObjectType());
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsData.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -51,7 +51,7 @@
public void save(MissingNumberPattern missingNumberPattern);
- public AnalyticsClass getClassByName(String name);
+ public AnalyticsClass getClassByPackageAndName(String name);
public AnalyticsClass getClassById(int id);
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/java/org/drools/analytics/dao/AnalyticsDataMaps.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -140,7 +140,7 @@
link);
}
- public AnalyticsClass getClassByName(String name) {
+ public AnalyticsClass getClassByPackageAndName(String name) {
return classesByName.get(name);
}
@@ -270,7 +270,7 @@
if (gapsByFieldId.containsKey(gap.getField().getId())) {
Set<Gap> set = gapsByFieldId.get(gap.getField().getId());
- set.add(gap);
+ set.remove(gap);
if (set.isEmpty()) {
gapsByFieldId.remove(gap.getField().getId());
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Clean.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -10,10 +10,9 @@
global AnalyticsData data;
#
-# Removes useless gaps.
-# Type: None
# Example: missing ( x >= 10 ) and ( x <= 10 ). This is the same as ( x == 10 )
-rule "Clean up gaps"
+#
+rule "Merge gaps"
when
$g1 :Gap(
evaluator == ">="
@@ -35,3 +34,56 @@
data.save( mnp );
insert( mnp );
end
+/*
+#
+# Example: covered ( x > 10 ) and ( x < 100 ) ( x == 50 )
+# reports that ( x > 50 ) and ( x < 50 ) are missing.
+#
+rule "Remove useless gaps"
+ when
+ $r1 :LiteralRestriction( fieldType == Field.FieldType.INT )
+
+ # gap ( x > 50 )
+ $g :Gap(
+ evaluator == ">",
+ restriction == $r1
+ )
+
+ # covered ( x > 50 )
+ $r2 :LiteralRestriction(
+ fieldId = $r1.fieldId,
+ patternIsNot == $r1.patternIsNot,
+ ( evaluator == ">" || == ">=" )
+ intValue < $r1.intValue()
+ )
+
+ not LiteralRestriction(
+ fieldId = $r.fieldId,
+ patternIsNot == $r.patternIsNot,
+ intValue < $r1.intValue(),
+ intValue < $r2.intValue()
+ )
+ then
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+ #
+end
+*/
+
+
+
+
+
+
+
+
+
+
+
+
+
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Dates.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -3,161 +3,171 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.accumulateFunction.ValidatePattern;
-import org.drools.analytics.accumulateFunction.ValidatePatternResult;
import org.drools.analytics.result.AnalysisResult;
import org.drools.analytics.result.Gap;
-import java.util.ArrayList;
-import java.util.TreeSet;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
import java.util.Date;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
import org.drools.analytics.dao.AnalyticsData;
#declare any global variables here
global AnalyticsData data;
-function String dateToString(Date date) {
- String fmt = System.getProperty("drools.dateformat");
- if (fmt == null) {
- fmt = "dd-MM-yyyy";
- }
+function boolean checkDates(Date d1, Date d2, boolean up) {
+ Calendar c1 = new GregorianCalendar();
+ c1.setTime(d1);
+ Calendar c2 = new GregorianCalendar();
+ c2.setTime(d2);
- return new SimpleDateFormat(fmt, Locale.ENGLISH).format(date);
+ c2.roll( Calendar.DATE, up );
+
+ return ( 0 == c1.compareTo( c2 ) );
}
+# If all ranges are not checked for a field.
+#
+# Type: Warning
+# Example: in "Rule 1" Foo( bar > "27-Oct-2007" )
+# and in Foo( <= "27-Oct-2007" || == "27-Oct-2007" ) is missing.
+#
+rule "Range check for dates, if smaller than or equal is missing"
+ when
+ $f :Field( fieldType == Field.FieldType.DATE )
+
+ # Foo( bar > "27-Oct-2007" )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == ">"
+ )
+
+ # Check if Foo( bar == "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == "<=" ),
+ patternIsNot == $r.patternIsNot,
+ eval( dateValue.equals($r.getDateValue()) )
+ )
+ then
+ Gap gap = new Gap( $f, "<=", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
-#
-# If all ranges are not checked for a date field.
+# If all ranges are not checked for a field.
#
# Type: Warning
-# Example: in "Rule 1" Foo( bar < "27-Oct-2007" ) and in "Rule 2" Foo( bar > "27-Oct-2007" )
-# then Foo( bar == "27-Oct-2007" ) is missing.
-rule "Range check for dates, smaller and greater than"
+# Example: in "Rule 1" Foo( bar < "27-Oct-2007" )
+# and in Foo( >= "27-Oct-2007" || == "27-Oct-2007" ) is missing.
+#
+rule "Range check for dates, if greater than or equal is missing"
when
$f :Field( fieldType == Field.FieldType.DATE )
- (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">"
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()) )
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<"
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()) )
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<="
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">",
- patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()) )
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == ">="
- )
- and
- not LiteralRestriction(
- fieldId == $f.id,
- evaluator == "<",
- patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()) )
- )
+
+ # Foo( bar > "27-Oct-2007" )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == "<"
)
+
+ # Check if Foo( bar == "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == ">=" ),
+ patternIsNot == $r.patternIsNot,
+ eval( dateValue.equals($r.getDateValue()) )
+ )
then
- Gap gap = new Gap( $f, Gap.getReversedEvaluator($r.getEvaluator()), $r);
+ Gap gap = new Gap( $f, ">=", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
# If all ranges are not checked for a field.
-# If equality and smaller than exist check that greater than exists too.
#
# Type: Warning
-# Example: in "Rule 1" Foo(bar == "27-Oct-2007" ) and in "Rule 2" Foo( bar < "27-Oct-2007" )
-# then Foo( bar > "27-Oct-2007" ) is missing.
+# Example: in "Rule 1" Foo( bar == "27-Oct-2007" || bar <= "27-Oct-2007" )
+# and no Foo( bar > "27-Oct-2007" || >= "27-Oct-2007" || >= "28-Oct-2007" || == "28-Oct-2007" )
+# then Foo( bar > "27-Oct-2007" ) is missing.
+#
rule "Range check for dates, equal and greater than"
when
- # Case Foo( bar == "27-Oct-2007" ) Foo( bar >= "27-Oct-2007" || > "27-Oct-2007" ).
$f :Field( fieldType == Field.FieldType.DATE )
+
+ # Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == "=="
+ ( evaluator == "==" || == "<=" )
)
- LiteralRestriction(
+
+ # Check if Foo( bar > "27-Oct-2007" || >= "27-Oct-2007" ) is missing.
+ not LiteralRestriction(
fieldId == $f.id,
( evaluator == ">" || == ">=" ),
patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()))
+ eval( dateValue.equals($r.getDateValue()) )
)
- # Check if Foo( bar < "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
+
+ # Check if Foo( bar == "28-Oct-2007" || >= "28-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
+ ( evaluator == "==" || == ">=" ),
patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()))
+ eval( checkDates( dateValue, $r.getDateValue(), true ) )
)
then
- Gap gap = new Gap( $f, "<", $r );
+ Gap gap = new Gap( $f, ">", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
# If all ranges are not checked for a field.
-# If equality and smaller than exist check that greater than exists too.
#
# Type: Warning
-# Example: in "Rule 1" Foo(bar == "27-Oct-2007" ) and in "Rule 2" Foo( bar > "27-Oct-2007" )
-# then Foo( bar < "27-Oct-2007" ) is missing.
+# Example: in "Rule 1" Foo( bar == "27-Oct-2007" || bar >= "27-Oct-2007" )
+# and no Foo( bar < "27-Oct-2007" || <= "27-Oct-2007" || <= "26-Oct-2007" || == "26-Oct-2007" )
+# then Foo( bar < "27-Oct-2007" ) is missing.
+#
rule "Range check for dates, equal and smaller than"
when
- # Case Foo( bar == "27-Oct-2007" ) Foo( bar <= "27-Oct-2007" || < "27-Oct-2007" ).
$f :Field( fieldType == Field.FieldType.DATE )
+
+ # Foo( bar == "27-Oct-2007" )
$r :LiteralRestriction(
fieldId == $f.id,
- evaluator == "=="
+ ( evaluator == "==" || == ">=" )
)
- LiteralRestriction(
+
+ # Check if Foo( bar < "27-Oct-2007" || <= "27-Oct-2007" ) is missing.
+ not LiteralRestriction(
fieldId == $f.id,
( evaluator == "<" || == "<=" ),
patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()))
+ eval( dateValue.equals($r.getDateValue()) )
)
- # Check if Foo( bar > "27-Oct-2007" || >= "27-Oct-2007" ) is missing.
+
+ # Check if Foo( bar == "26-Oct-2007" || <= "26-Oct-2007" ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
+ ( evaluator == "==" || == "<=" ),
patternIsNot == $r.patternIsNot,
- eval( dateValue.equals($r.getDateValue()))
+ eval( checkDates( dateValue, $r.getDateValue(), false ) )
)
then
- Gap gap = new Gap( $f, ">", $r );
+ Gap gap = new Gap( $f, "<", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Doubles.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -3,8 +3,6 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.accumulateFunction.ValidatePattern;
-import org.drools.analytics.accumulateFunction.ValidatePatternResult;
import org.drools.analytics.result.AnalysisResult;
import org.drools.analytics.result.Gap;
@@ -13,9 +11,142 @@
#declare any global variables here
global AnalyticsData data;
+
# If all ranges are not checked for a field.
#
# Type: Warning
+# Example: in "Rule 1" Foo( bar > 42 )
+# and in Foo( <= 42 || == 42 ) is missing.
+#
+rule "Range check for doubles, if smaller than or equal is missing"
+ when
+ $f :Field( fieldType == Field.FieldType.DOUBLE )
+
+ # Foo( bar > 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == ">"
+ )
+
+ # Check if Foo( bar == 42 || <= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == "<=" ),
+ patternIsNot == $r.patternIsNot,
+ doubleValue == $r.doubleValue
+ )
+ then
+ Gap gap = new Gap( $f, "<=", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
+
+# If all ranges are not checked for a field.
+#
+# Type: Warning
+# Example: in "Rule 1" Foo( bar < 42 )
+# and in Foo( >= 42 || == 42 ) is missing.
+#
+rule "Range check for doubles, if greater than or equal is missing"
+ when
+ $f :Field( fieldType == Field.FieldType.DOUBLE )
+
+ # Foo( bar > 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == "<"
+ )
+
+ # Check if Foo( bar == 42 || <= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == ">=" ),
+ patternIsNot == $r.patternIsNot,
+ doubleValue == $r.doubleValue
+ )
+ then
+ Gap gap = new Gap( $f, ">=", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
+
+# If all ranges are not checked for a field.
+#
+# Type: Warning
+# Example: in "Rule 1" Foo( bar == 42 || bar <= 42 )
+# and no Foo( bar > 42 || >= 42 || >= 43 || == 43 )
+# then Foo( bar > 42 ) is missing.
+#
+rule "Range check for doubles, equal and greater than"
+ when
+ $f :Field( fieldType == Field.FieldType.DOUBLE )
+
+ # Foo( bar == 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == "<=" )
+ )
+
+ # Check if Foo( bar > 42 || >= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == ">" || == ">=" ),
+ patternIsNot == $r.patternIsNot,
+ doubleValue == $r.doubleValue
+ )
+ then
+ Gap gap = new Gap( $f, ">", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
+
+# If all ranges are not checked for a field.
+#
+# Type: Warning
+# Example: in "Rule 1" Foo( bar == 42 || bar >= 42 )
+# and no Foo( bar < 42 || <= 42 || <= 41 || == 41 )
+# then Foo( bar < 42 ) is missing.
+#
+rule "Range check for doubles, equal and smaller than"
+ when
+ $f :Field( fieldType == Field.FieldType.DOUBLE )
+
+ # Foo( bar == 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == ">=" )
+ )
+
+ # Check if Foo( bar < 42 || <= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "<" || == "<=" ),
+ patternIsNot == $r.patternIsNot,
+ doubleValue == $r.doubleValue
+ )
+ then
+ Gap gap = new Gap( $f, "<", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
+
+
+/*
+# If all ranges are not checked for a field.
+#
+# Type: Warning
# Example: in "Rule 1" Foo(bar > 42 ) and in "Rule 2" Foo( bar < 42 )
# then Foo( bar == 42 ) is missing.
rule "Range check for doubles, smaller and greater than"
@@ -144,4 +275,4 @@
data.save( gap );
insert( gap );
end
-
+*/
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/main/resources/org/drools/analytics/rangeChecks/Integers.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -3,16 +3,9 @@
#list any import classes here.
import org.drools.analytics.components.*;
-import org.drools.analytics.accumulateFunction.ValidatePattern;
-import org.drools.analytics.accumulateFunction.ValidatePatternResult;
import org.drools.analytics.result.AnalysisResult;
import org.drools.analytics.result.Gap;
-import java.util.ArrayList;
-import java.util.TreeSet;
-import java.text.SimpleDateFormat;
-import java.util.Locale;
-
import org.drools.analytics.dao.AnalyticsData;
global AnalyticsData data;
@@ -20,205 +13,145 @@
# If all ranges are not checked for a field.
#
# Type: Warning
-# Example: in "Rule 1" Foo(bar > 42 ) and in "Rule 2" Foo( bar < 42 )
-# then Foo( bar == 42 ) is missing.
-rule "Range check for integers, smaller and greater than"
+# Example: in "Rule 1" Foo( bar > 42 )
+# and in Foo( <= 42 || == 42 ) is missing.
+#
+rule "Range check for integers, if smaller than or equal is missing"
when
- $f :Field( fieldType == Field.FieldType.INT, $fieldId :id, $fieldName :name, $classId :classId )
- (
- $r :LiteralRestriction(
- fieldId == $fieldId,
- evaluator == ">",
- $patternIsNot :patternIsNot,
- $value :intValue
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- ( evaluator == "==" || == "<=" ),
- patternIsNot == $patternIsNot,
- intValue == $value
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $fieldId,
- evaluator == "<",
- $patternIsNot :patternIsNot,
- $value :intValue
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- ( evaluator == "==" || == ">=" ),
- patternIsNot == $patternIsNot,
- intValue == $value
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $fieldId,
- evaluator == "<=",
- $patternIsNot :patternIsNot,
- $value :intValue
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- evaluator == ">",
- patternIsNot == $patternIsNot,
- intValue == $value
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- evaluator == ">=",
- patternIsNot == $patternIsNot,
- eval( intValue == $value + 1 )
- )
- ) or (
- $r :LiteralRestriction(
- fieldId == $fieldId,
- evaluator == ">=",
- $patternIsNot :patternIsNot,
- $value :intValue
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- evaluator == "<",
- patternIsNot == $patternIsNot,
- intValue == $value
- )
- and
- not LiteralRestriction(
- fieldId == $fieldId,
- evaluator == "<=",
- patternIsNot == $patternIsNot,
- eval( intValue == $value - 1 )
- )
+ $f :Field( fieldType == Field.FieldType.INT )
+
+ # Foo( bar > 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == ">"
)
+
+ # Check if Foo( bar == 42 || <= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == "<=" ),
+ patternIsNot == $r.patternIsNot,
+ intValue == $r.intValue
+ )
then
- Gap gap = new Gap( $f, Gap.getReversedEvaluator($r.getEvaluator()), $r );
+ Gap gap = new Gap( $f, "<=", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
# If all ranges are not checked for a field.
-# If equality and smaller than exist check that greater than exists too.
+#
+# Type: Warning
+# Example: in "Rule 1" Foo( bar < 42 )
+# and in Foo( >= 42 || == 42 ) is missing.
#
+rule "Range check for integers, if greater than or equal is missing"
+ when
+ $f :Field( fieldType == Field.FieldType.INT )
+
+ # Foo( bar > 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ evaluator == "<"
+ )
+
+ # Check if Foo( bar == 42 || <= 42 ) is missing.
+ not LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == ">=" ),
+ patternIsNot == $r.patternIsNot,
+ intValue == $r.intValue
+ )
+ then
+ Gap gap = new Gap( $f, ">=", $r );
+
+ gap.setFiredRuleName( drools.getRule().getName() );
+
+ data.save( gap );
+ insert( gap );
+end
+
+# If all ranges are not checked for a field.
+#
# Type: Warning
-# Example: in "Rule 1" Foo(bar == 42 ) and in "Rule 2" Foo( bar < 42 )
-# then Foo( bar > 42 ) is missing.
+# Example: in "Rule 1" Foo( bar == 42 || bar <= 42 )
+# and no Foo( bar > 42 || >= 42 || >= 43 || == 43 )
+# then Foo( bar > 42 ) is missing.
+#
rule "Range check for integers, equal and greater than"
when
- (
- # Case Foo( bar == 42 ) Foo( bar >= 43 || == 43 ).
- $f :Field( fieldType == Field.FieldType.INT )
- and
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- and
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- eval( intValue == $r.getIntValue() + 1 )
- )
- ) or (
- # Case Foo( bar == 42 ) Foo( bar >= 42 || > 42 ).
- $f :Field( fieldType == Field.FieldType.INT )
- and
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- and
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
- patternIsNot == $r.patternIsNot,
- intValue == $r.intValue
- )
+ $f :Field( fieldType == Field.FieldType.INT )
+
+ # Foo( bar == 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == "<=" )
)
- # Check if Foo( bar < 42 || <= 42 ) is missing.
+
+ # Check if Foo( bar > 42 || >= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
+ ( evaluator == ">" || == ">=" ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
- # Check if Foo( bar == 41 || <= 41 ) is missing.
+
+ # Check if Foo( bar == 43 || >= 43 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
+ ( evaluator == "==" || == ">=" ),
patternIsNot == $r.patternIsNot,
- eval( intValue == $r.getIntValue() - 1 )
+ eval( intValue == $r.getIntValue() + 1 )
)
then
- Gap gap = new Gap( $f, "<", $r );
+ Gap gap = new Gap( $f, ">", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
# If all ranges are not checked for a field.
-# If equality and greater than exist check that smaller than exists too.
#
# Type: Warning
-# Example: in "Rule 1" Foo(bar == 42 ) and in "Rule 2" Foo( bar > 42 )
-# then Foo( bar < 42 ) is missing.
+# Example: in "Rule 1" Foo( bar == 42 || bar >= 42 )
+# and no Foo( bar < 42 || <= 42 || <= 41 || == 41 )
+# then Foo( bar < 42 ) is missing.
+#
rule "Range check for integers, equal and smaller than"
when
- (
- # Case Foo( bar == 42 ) Foo( bar <= 43 || == 43 ).
- $f :Field( fieldType == Field.FieldType.INT )
- and
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- and
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "==" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- eval( intValue == $r.getIntValue() - 1 )
- )
- ) or (
- # Case Foo( bar == 42 ) Foo( bar <= 42 || < 42 ).
- $f :Field( fieldType == Field.FieldType.INT )
- and
- $r :LiteralRestriction(
- fieldId == $f.id,
- evaluator == "=="
- )
- and
- LiteralRestriction(
- fieldId == $f.id,
- ( evaluator == "<" || == "<=" ),
- patternIsNot == $r.patternIsNot,
- intValue == $r.intValue
- )
+ $f :Field( fieldType == Field.FieldType.INT )
+
+ # Foo( bar == 42 )
+ $r :LiteralRestriction(
+ fieldId == $f.id,
+ ( evaluator == "==" || == ">=" )
)
- # Check if Foo( bar > 42 || >= 42 ) is missing.
+
+ # Check if Foo( bar < 42 || <= 42 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == ">" || == ">=" ),
+ ( evaluator == "<" || == "<=" ),
patternIsNot == $r.patternIsNot,
intValue == $r.intValue
)
- # Check if Foo( bar == 41 || >= 41 ) is missing.
+
+ # Check if Foo( bar == 41 || <= 41 ) is missing.
not LiteralRestriction(
fieldId == $f.id,
- ( evaluator == "==" || == ">=" ),
+ ( evaluator == "==" || == "<=" ),
patternIsNot == $r.patternIsNot,
- eval( intValue == $r.getIntValue() + 1 )
+ eval( intValue == $r.getIntValue() - 1 )
)
then
- Gap gap = new Gap( $f, ">", $r );
+ Gap gap = new Gap( $f, "<", $r );
+
gap.setFiredRuleName( drools.getRule().getName() );
+
data.save( gap );
insert( gap );
end
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/AnalyticsTestStandalone.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -29,13 +29,19 @@
.getResourceAsStream("MissingRangesForVariables.drl")));
PackageDescr descr5 = new DrlParser().parse(new InputStreamReader(
Analyzer.class.getResourceAsStream("Misc.drl")));
+ PackageDescr descr6 = new DrlParser().parse(new InputStreamReader(
+ Analyzer.class.getResourceAsStream("Misc2.drl")));
+ PackageDescr descr7 = new DrlParser().parse(new InputStreamReader(
+ Analyzer.class.getResourceAsStream("Misc3.drl")));
Analyzer a = new Analyzer();
- a.addPackageDescr(descr);
+// a.addPackageDescr(descr);
// a.addPackageDescr(descr2);
- // a.addPackageDescr(descr3);
+// a.addPackageDescr(descr3);
// a.addPackageDescr(descr4);
a.addPackageDescr(descr5);
+ a.addPackageDescr(descr6);
+ a.addPackageDescr(descr7);
a.fireAnalysis();
// System.out.print(a.getResultAsPlainText());
// System.out.print(a.getResultAsXML());
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDatesTest.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -19,12 +19,13 @@
*/
public class RangeCheckDatesTest extends TestBase {
- public void testSmallerAndGreaterThan() throws Exception {
+ public void testSmallerOrEqual() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Dates.drl"));
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Range check for dates, smaller and greater than"));
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for dates, if smaller than or equal is missing"));
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDates.drl"));
@@ -46,34 +47,8 @@
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Date range 1a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 2a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 3a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 4a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 7a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 7b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 8a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 8b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 9a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 9b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 10a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 10b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 11a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 11b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 12a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 13a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 14a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 15a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 18a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 18b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 19a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 19b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 20a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 20b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 21a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 21b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 22a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 22b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 4a"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 5a"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
@@ -82,6 +57,44 @@
}
}
+ public void testGreaterOrEqual() throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("rangeChecks/Dates.drl"));
+
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for dates, if greater than or equal is missing"));
+
+ Collection<? extends Object> testData = getTestData(this.getClass()
+ .getResourceAsStream("MissingRangesForDates.drl"));
+
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ session.setGlobal("data", data);
+
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
+
+ Iterator iter = sessionResult.iterateObjects();
+
+ Set<String> rulesThatHadErrors = new HashSet<String>();
+ while (iter.hasNext()) {
+ Object o = (Object) iter.next();
+ if (o instanceof Gap) {
+ rulesThatHadErrors.add(((Gap) o).getRuleName());
+ }
+ // System.out.println(o);
+ }
+
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 4b"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 5b"));
+
+ if (!rulesThatHadErrors.isEmpty()) {
+ for (String string : rulesThatHadErrors) {
+ fail("Rule " + string + " caused an error.");
+ }
+ }
+ }
+
public void testEqualAndGreaterThan() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Dates.drl"));
@@ -109,12 +122,13 @@
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Date range 5b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 16b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 7b"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 3"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
@@ -146,12 +160,13 @@
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Date range 6b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Date range 17b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 6b"));
+ assertTrue(rulesThatHadErrors.remove("Date gap rule 2"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckDoublesTest.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -12,20 +12,20 @@
import org.drools.analytics.result.Gap;
import org.drools.base.RuleNameMatchesAgendaFilter;
-
/**
*
* @author Toni Rikkola
- *
+ *
*/
public class RangeCheckDoublesTest extends TestBase {
- public void testSmallerAndGreaterThan() throws Exception {
+ public void testSmallerOrEqual() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Doubles.drl"));
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Range check for doubles, smaller and greater than"));
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for doubles, if smaller than or equal is missing"));
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForDoubles.drl"));
@@ -33,7 +33,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -46,34 +47,8 @@
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Double range 1a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 2a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 3a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 4a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 7a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 7b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 8a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 8b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 9a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 9b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 10a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 10b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 11a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 11b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 12a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 13a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 14a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 15a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 18a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 18b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 19a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 19b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 20a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 20b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 21a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 21b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 22a, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 22b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 4a"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 5a"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
@@ -82,6 +57,44 @@
}
}
+ public void testGreaterOrEqual() throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("rangeChecks/Doubles.drl"));
+
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for doubles, if greater than or equal is missing"));
+
+ Collection<? extends Object> testData = getTestData(this.getClass()
+ .getResourceAsStream("MissingRangesForDoubles.drl"));
+
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ session.setGlobal("data", data);
+
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
+
+ Iterator iter = sessionResult.iterateObjects();
+
+ Set<String> rulesThatHadErrors = new HashSet<String>();
+ while (iter.hasNext()) {
+ Object o = (Object) iter.next();
+ if (o instanceof Gap) {
+ rulesThatHadErrors.add(((Gap) o).getRuleName());
+ }
+ // System.out.println(o);
+ }
+
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 4b"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 5b"));
+
+ if (!rulesThatHadErrors.isEmpty()) {
+ for (String string : rulesThatHadErrors) {
+ fail("Rule " + string + " caused an error.");
+ }
+ }
+ }
+
public void testEqualAndGreaterThan() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Doubles.drl"));
@@ -95,7 +108,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -107,13 +121,15 @@
}
// System.out.println(o);
}
-
- assertTrue(rulesThatHadErrors.remove("Double range 5b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 16b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 7b"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 3"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 9b"));
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
@@ -131,7 +147,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -143,14 +160,131 @@
}
// System.out.println(o);
}
-
- assertTrue(rulesThatHadErrors.remove("Double range 6b, has gap"));
- assertTrue(rulesThatHadErrors.remove("Double range 17b, has gap"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 6b"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 2"));
+ assertTrue(rulesThatHadErrors.remove("Double gap rule 9a"));
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
+
+ /*
+ * public void testSmallerAndGreaterThan() throws Exception {
+ * StatelessSession session = getStatelessSession(this.getClass()
+ * .getResourceAsStream("rangeChecks/Doubles.drl"));
+ *
+ * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
+ * doubles, smaller and greater than"));
+ *
+ * Collection<? extends Object> testData = getTestData(this.getClass()
+ * .getResourceAsStream("MissingRangesForDoubles.drl"));
+ *
+ * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ * session.setGlobal("data", data);
+ *
+ * StatelessSessionResult sessionResult =
+ * session.executeWithResults(testData);
+ *
+ * Iterator iter = sessionResult.iterateObjects();
+ *
+ * Set<String> rulesThatHadErrors = new HashSet<String>(); while
+ * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
+ * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
+ * System.out.println(o); }
+ *
+ * assertTrue(rulesThatHadErrors.remove("Double range 1a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 2a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 3a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 4a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 7a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 7b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 8a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 8b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 9a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 9b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 10a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 10b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 11a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 11b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 12a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 13a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 14a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 15a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 18a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 18b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 19a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 19b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 20a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 20b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 21a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 21b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 22a, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 22b, has gap"));
+ *
+ * if (!rulesThatHadErrors.isEmpty()) { for (String string :
+ * rulesThatHadErrors) { fail("Rule " + string + " caused an error."); } } }
+ *
+ * public void testEqualAndGreaterThan() throws Exception { StatelessSession
+ * session = getStatelessSession(this.getClass()
+ * .getResourceAsStream("rangeChecks/Doubles.drl"));
+ *
+ * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
+ * doubles, equal and greater than"));
+ *
+ * Collection<? extends Object> testData = getTestData(this.getClass()
+ * .getResourceAsStream("MissingRangesForDoubles.drl"));
+ *
+ * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ * session.setGlobal("data", data);
+ *
+ * StatelessSessionResult sessionResult =
+ * session.executeWithResults(testData);
+ *
+ * Iterator iter = sessionResult.iterateObjects();
+ *
+ * Set<String> rulesThatHadErrors = new HashSet<String>(); while
+ * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
+ * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
+ * System.out.println(o); }
+ *
+ * assertTrue(rulesThatHadErrors.remove("Double range 5b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 16b, has gap"));
+ *
+ * if (!rulesThatHadErrors.isEmpty()) { for (String string :
+ * rulesThatHadErrors) { fail("Rule " + string + " fired."); } } }
+ *
+ * public void testEqualAndSmallerThan() throws Exception { StatelessSession
+ * session = getStatelessSession(this.getClass()
+ * .getResourceAsStream("rangeChecks/Doubles.drl"));
+ *
+ * session.setAgendaFilter(new RuleNameMatchesAgendaFilter( "Range check for
+ * doubles, equal and smaller than"));
+ *
+ * Collection<? extends Object> testData = getTestData(this.getClass()
+ * .getResourceAsStream("MissingRangesForDoubles.drl"));
+ *
+ * AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ * session.setGlobal("data", data);
+ *
+ * StatelessSessionResult sessionResult =
+ * session.executeWithResults(testData);
+ *
+ * Iterator iter = sessionResult.iterateObjects();
+ *
+ * Set<String> rulesThatHadErrors = new HashSet<String>(); while
+ * (iter.hasNext()) { Object o = (Object) iter.next(); if (o instanceof Gap) {
+ * rulesThatHadErrors.add(((Gap) o).getRuleName()); } //
+ * System.out.println(o); }
+ *
+ * assertTrue(rulesThatHadErrors.remove("Double range 6b, has gap"));
+ * assertTrue(rulesThatHadErrors.remove("Double range 17b, has gap"));
+ *
+ * if (!rulesThatHadErrors.isEmpty()) { for (String string :
+ * rulesThatHadErrors) { fail("Rule " + string + " fired."); } } }
+ */
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/java/org/drools/analytics/RangeCheckIntegersTest.java 2007-09-26 08:47:48 UTC (rev 15375)
@@ -19,12 +19,13 @@
*/
public class RangeCheckIntegersTest extends TestBase {
- public void testSmallerAndGreaterThan() throws Exception {
+ public void testSmallerOrEqual() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Integers.drl"));
- session.setAgendaFilter(new RuleNameMatchesAgendaFilter(
- "Range check for integers, smaller and greater than"));
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for integers, if smaller than or equal is missing"));
Collection<? extends Object> testData = getTestData(this.getClass()
.getResourceAsStream("MissingRangesForInts.drl"));
@@ -32,7 +33,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -42,33 +44,11 @@
if (o instanceof Gap) {
rulesThatHadErrors.add(((Gap) o).getRuleName());
}
-// System.out.println(o);
+ // System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Missing int range 1a, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 1b, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 2a, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 2b, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 3a, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 3b, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 4a, warning"));
- assertTrue(rulesThatHadErrors.remove("Missing int range 4b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 7a, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 7b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 8a, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 8b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 9a, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 9b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 10a, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 10b, warning"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 4a"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 5a"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
@@ -77,6 +57,44 @@
}
}
+ public void testGreaterOrEqual() throws Exception {
+ StatelessSession session = getStatelessSession(this.getClass()
+ .getResourceAsStream("rangeChecks/Integers.drl"));
+
+ session
+ .setAgendaFilter(new RuleNameMatchesAgendaFilter(
+ "Range check for integers, if greater than or equal is missing"));
+
+ Collection<? extends Object> testData = getTestData(this.getClass()
+ .getResourceAsStream("MissingRangesForInts.drl"));
+
+ AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
+ session.setGlobal("data", data);
+
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
+
+ Iterator iter = sessionResult.iterateObjects();
+
+ Set<String> rulesThatHadErrors = new HashSet<String>();
+ while (iter.hasNext()) {
+ Object o = (Object) iter.next();
+ if (o instanceof Gap) {
+ rulesThatHadErrors.add(((Gap) o).getRuleName());
+ }
+ // System.out.println(o);
+ }
+
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 4b"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 5b"));
+
+ if (!rulesThatHadErrors.isEmpty()) {
+ for (String string : rulesThatHadErrors) {
+ fail("Rule " + string + " caused an error.");
+ }
+ }
+ }
+
public void testEqualAndGreaterThan() throws Exception {
StatelessSession session = getStatelessSession(this.getClass()
.getResourceAsStream("rangeChecks/Integers.drl"));
@@ -90,7 +108,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -103,13 +122,13 @@
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Missing int range 5b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 11b, warning"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 7b"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 3"));
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
@@ -127,7 +146,8 @@
AnalyticsData data = AnalyticsDataFactory.getAnalyticsData();
session.setGlobal("data", data);
- StatelessSessionResult sessionResult = session.executeWithResults(testData);
+ StatelessSessionResult sessionResult = session
+ .executeWithResults(testData);
Iterator iter = sessionResult.iterateObjects();
@@ -139,13 +159,14 @@
}
// System.out.println(o);
}
- assertTrue(rulesThatHadErrors.remove("Missing int range 6b, warning"));
- assertTrue(rulesThatHadErrors
- .remove("Missing not int range 12b, warning"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 1"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 6b"));
+ assertTrue(rulesThatHadErrors.remove("Integer gap rule 2"));
+
if (!rulesThatHadErrors.isEmpty()) {
for (String string : rulesThatHadErrors) {
- fail("Rule " + string + " fired.");
+ fail("Rule " + string + " caused an error.");
}
}
}
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -1,4 +1,4 @@
-package com.pat.the.pattern
+package com.misc.someData
import com.sample.DroolsTest.Message;
@@ -75,4 +75,4 @@
NumbersInPattern( x == 60 )
then
System.out.println( "Test" );
-end
+end
\ No newline at end of file
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc2.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -0,0 +1,130 @@
+package com.misc.missingRanges
+
+import com.sample.DroolsTest.Message;
+
+
+rule "Check time 1"
+ when
+ Time( startDate > "1-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 2"
+ when
+ Foo( startDate <= "10-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 3"
+ when
+ Foo( startDate > "10-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 4"
+ when
+ Foo( startDate < "20-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 5"
+ when
+ Foo( startDate > "27-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 6"
+ when
+ Foo( startDate <= "27-Oct-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 7"
+ when
+ Foo( endDate < "10-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 8"
+ when
+ Foo( endDate == "11-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 9"
+ when
+ Foo( endDate >= "11-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 10"
+ when
+ Foo( endDate < "20-Jan-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 11"
+ when
+ Foo( endDate >= "20-Jan-2002" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 12"
+ when
+ Foo( endDate < "13-Oct-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 13"
+ when
+ Foo( endDate == "13-Oct-2002" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 14"
+ when
+ Foo( endDate == "14-Oct-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 15"
+ when
+ Foo( endDate == "15-Oct-2002" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 16"
+ when
+ Foo( endDate == "25-Oct-2007" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 17"
+ when
+ Foo( endDate < "26-Oct-2002" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Check time 18"
+ when
+ Foo( endDate >= "27-Oct-2007" )
+ then
+ System.out.println( "Test" );
+end
Added: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl (rev 0)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/Misc3.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -0,0 +1,36 @@
+package com.misc.missingRanges
+
+import com.sample.DroolsTest.Message;
+
+
+rule "Some rule 1"
+ when
+ SuperPattern( temp > 1, bar <= 10.0, a == "first string", b == "second string" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Some rule 2"
+ when
+ SuperPattern( temp == 1, a == "first string", b == "second string" )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Some rule 3"
+ when
+ sp: SuperPattern( temp < 1, bar == 10.0, a == "first string" )
+ LesserPattern( group contains sp )
+ then
+ System.out.println( "Test" );
+end
+
+rule "Some rule 4"
+ when
+ SuperPattern( temp < 10, bar >= -1.0, a == "first string", b == "second string" )
+ SuperPattern( temp < 10 a == "first string", b == "second string" )
+ SuperPattern( temp < 10, a == "first string", b == "second string" )
+ SuperPattern( temp < 10, a == "first string", b == "second string" )
+ then
+ System.out.println( "Test" );
+end
\ No newline at end of file
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDates.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -2,6 +2,126 @@
import com.sample.DroolsTest.Message;
+rule "Date gap rule 1"
+ when
+ DatePattern1( value == "27-Oct-2007" )
+ then
+ # gap > 10 <.
+end
+
+rule "Date gap rule 2"
+ when
+ DatePattern2( value >= "27-Oct-2000" )
+ then
+ # gap < 15.
+end
+
+rule "Date gap rule 3"
+ when
+ DatePattern3( value <= "27-Oct-2004" )
+ then
+ # gap > 15.
+end
+
+rule "Date gap rule 4a"
+ when
+ DatePattern4( value > "27-Oct-2001" )
+ then
+ # gap == 25.
+end
+
+rule "Date gap rule 4b"
+ when
+ DatePattern4( value < "27-Oct-2001" )
+ then
+ # gap == 25.
+end
+
+rule "Date gap rule 5a"
+ when
+ DatePattern5( value > "20-Oct-2007" )
+ then
+ # gap 100 > x > 50.
+end
+
+rule "Date gap rule 5b"
+ when
+ DatePattern5( value < "10-Oct-2007" )
+ then
+ # gap 100 > x > 50.
+end
+
+rule "Date gap rule 6a"
+ when
+ DatePattern6( value > "28-Oct-2007" )
+ then
+ # gap < 350.
+end
+
+rule "Date gap rule 6b"
+ when
+ DatePattern6( value == "28-Oct-2007" )
+ then
+ # gap < 350.
+end
+
+rule "Date gap rule 7a"
+ when
+ DatePattern7( value < "27-Jan-2007" )
+ then
+ # gap > 55.
+end
+
+rule "Date gap rule 7b"
+ when
+ DatePattern7( value == "27-Jan-2007" )
+ then
+ # gap > 55.
+end
+
+rule "Date gap rule 8a"
+ when
+ DatePattern8( value < "11-Jan-2007" )
+ then
+ # No gap
+end
+
+rule "Date gap rule 8b"
+ when
+ DatePattern8( value == "11-Jan-2007" )
+ then
+ # No gap
+end
+
+rule "Date gap rule 8c"
+ when
+ DatePattern8( value > "11-Jan-2007" )
+ then
+ # No gap
+end
+
+rule "Date gap rule 9a"
+ when
+ DatePattern9( value <= "14-Jan-2007" )
+ then
+ # No gap
+end
+
+rule "Date gap rule 9b"
+ when
+ DatePattern9( value == "15-Jan-2007" )
+ then
+ # No gap
+end
+
+rule "Date gap rule 9c"
+ when
+ DatePattern9( value >= "16-Jan-2007" )
+ then
+ # No gap
+end
+
+/*
#
# These rules have gaps
#
@@ -327,19 +447,4 @@
then
System.out.println( "Test" );
end
-/* TODO: Rules to cover these kind of situations.
-rule "Date range 26a, no gap"
- when
- Foo26( value > "03-Oct-2002" )
- then
- System.out.println( "Test" );
-end
-
-rule "Date range 26b, no gap"
- when
- Foo26( value < "27-Oct-2007" )
- then
- System.out.println( "Test" );
-end
-*/
-
+*/
\ No newline at end of file
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForDoubles.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -2,6 +2,119 @@
import com.sample.DroolsTest.Message;
+rule "Double gap rule 1"
+ when
+ DoublePattern1( value == 10.0 )
+ then
+ # gap > 10 <.
+end
+
+rule "Double gap rule 2"
+ when
+ DoublePattern2( value >= 15.0 )
+ then
+ # gap < 15.
+end
+
+rule "Double gap rule 3"
+ when
+ DoublePattern3( value <= 15.0 )
+ then
+ # gap > 15.
+end
+
+rule "Double gap rule 4a"
+ when
+ DoublePattern4( value > 25.0 )
+ then
+ # gap == 25.
+end
+
+rule "Double gap rule 4b"
+ when
+ DoublePattern4( value < 25.0 )
+ then
+ # gap == 25.
+end
+
+rule "Double gap rule 5a"
+ when
+ DoublePattern5( value > 100.0 )
+ then
+ # gap 100 > x > 50.
+end
+
+rule "Double gap rule 5b"
+ when
+ DoublePattern5( value < 50.0 )
+ then
+ # gap 100 > x > 50.
+end
+
+rule "Double gap rule 6a"
+ when
+ DoublePattern6( value > 350.0 )
+ then
+ # gap < 350.
+end
+
+rule "Double gap rule 6b"
+ when
+ DoublePattern6( value == 350.0 )
+ then
+ # gap < 350.
+end
+
+rule "Double gap rule 7a"
+ when
+ DoublePattern7( value < 55.0 )
+ then
+ # gap > 55.
+end
+
+rule "Double gap rule 7b"
+ when
+ DoublePattern7( value == 55.0 )
+ then
+ # gap > 55.
+end
+
+rule "Double gap rule 8a"
+ when
+ DoublePattern8( value < 333.0 )
+ then
+ # No gap
+end
+
+rule "Double gap rule 8b"
+ when
+ DoublePattern8( value == 333.0 )
+ then
+ # No gap
+end
+
+rule "Double gap rule 8c"
+ when
+ DoublePattern8( value > 333.0 )
+ then
+ # No gap
+end
+
+rule "Double gap rule 9a"
+ when
+ DoublePattern9( value >= 400.0 )
+ then
+ # gap 400 > x > 399
+end
+
+rule "Double gap rule 9b"
+ when
+ DoublePattern9( value <= 399.0 )
+ then
+ # gap 400 > x > 399
+end
+
+/*
#
# These rules have gaps
#
@@ -348,4 +461,4 @@
then
System.out.println( "Test" );
end
-
+*/
Modified: labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl
===================================================================
--- labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl 2007-09-26 08:22:02 UTC (rev 15374)
+++ labs/jbossrules/trunk/experimental/drools-analytics/src/test/resources/org/drools/analytics/MissingRangesForInts.drl 2007-09-26 08:47:48 UTC (rev 15375)
@@ -2,359 +2,121 @@
import com.sample.DroolsTest.Message;
-#
-# These rules have gaps
-#
-rule "Missing int range 1a, warning"
+rule "Integer gap rule 1"
when
- Foo1warning( value > 42 )
+ IntegerPattern1( value == 10 )
then
- System.out.println( "Test" );
+ # gap > 10 <.
end
-rule "Missing int range 1b, warning"
+rule "Integer gap rule 2"
when
- Foo1warning( value < 42 )
+ IntegerPattern2( value >= 15 )
then
- System.out.println( "Test" );
+ # gap < 15.
end
-rule "Missing int range 2a, warning"
+rule "Integer gap rule 3"
when
- Foo2warning( value > 42 )
+ IntegerPattern3( value <= 15 )
then
- System.out.println( "Test" );
+ # gap > 15.
end
-rule "Missing int range 2b, warning"
+rule "Integer gap rule 4a"
when
- Foo2warning( value < 40 )
+ IntegerPattern4( value > 25 )
then
- System.out.println( "Test" );
+ # gap == 25.
end
-rule "Missing int range 3a, warning"
+rule "Integer gap rule 4b"
when
- Foo3warning( value >= 42 )
+ IntegerPattern4( value < 25 )
then
- System.out.println( "Test" );
+ # gap == 25.
end
-rule "Missing int range 3b, warning"
+rule "Integer gap rule 5a"
when
- Foo3warning( value < 40 )
+ IntegerPattern5( value > 100 )
then
- System.out.println( "Test" );
+ # gap 100 > x > 50.
end
-rule "Missing int range 4a, warning"
+rule "Integer gap rule 5b"
when
- Foo4warning( value > 42 )
+ IntegerPattern5( value < 50 )
then
- System.out.println( "Test" );
+ # gap 100 > x > 50.
end
-rule "Missing int range 4b, warning"
+rule "Integer gap rule 6a"
when
- Foo4warning( value <= 40 )
+ IntegerPattern6( value > 350 )
then
- System.out.println( "Test" );
+ # gap < 350.
end
-rule "Missing int range 5a, warning"
+rule "Integer gap rule 6b"
when
- Foo5warning( value > 40 )
+ IntegerPattern6( value == 350 )
then
- System.out.println( "Test" );
+ # gap < 350.
end
-rule "Missing int range 5b, warning"
+rule "Integer gap rule 7a"
when
- Foo5warning( value == 40 )
+ IntegerPattern7( value < 55 )
then
- System.out.println( "Test" );
+ # gap > 55.
end
-rule "Missing int range 6a, warning"
+rule "Integer gap rule 7b"
when
- Foo6warning( value < 40 )
+ IntegerPattern7( value == 55 )
then
- System.out.println( "Test" );
+ # gap > 55.
end
-rule "Missing int range 6b, warning"
+rule "Integer gap rule 8a"
when
- Foo6warning( value == 40 )
+ IntegerPattern8( value < 333 )
then
- System.out.println( "Test" );
+ # No gap
end
-#
-# These rules have gaps
-#
-rule "Missing not int range 7a, warning"
+rule "Integer gap rule 8b"
when
- not Foo7warning( value > 42 )
+ IntegerPattern8( value == 333 )
then
- System.out.println( "Test" );
+ # No gap
end
-rule "Missing not int range 7b, warning"
+rule "Integer gap rule 8c"
when
- not Foo7warning( value < 42 )
+ IntegerPattern8( value > 333 )
then
- System.out.println( "Test" );
+ # No gap
end
-rule "Missing not int range 8a, warning"
+rule "Integer gap rule 9a"
when
- not Foo8warning( value > 42 )
+ IntegerPattern9( value <= 122 )
then
- System.out.println( "Test" );
+ # No gap
end
-rule "Missing not int range 8b, warning"
+rule "Integer gap rule 9b"
when
- not Foo8warning( value < 40 )
+ IntegerPattern9( value == 123 )
then
- System.out.println( "Test" );
+ # No gap
end
-rule "Missing not int range 9a, warning"
+rule "Integer gap rule 9c"
when
- not Foo9warning( value >= 42 )
+ IntegerPattern9( value >= 124 )
then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 9b, warning"
- when
- not Foo9warning( value < 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10a, warning"
- when
- not Foo10warning( value > 42 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10b, warning"
- when
- not Foo10warning( value <= 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 11a, warning"
- when
- not Foo11warning( value > 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 11b, warning"
- when
- not Foo11warning( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 12a, warning"
- when
- not Foo12warning( value < 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 12b, warning"
- when
- not Foo12warning( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-#
-# These rules do not have gaps
-#
-rule "Missing int range 1a, ok"
- when
- Foo1ok( value >= 42 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 1b, ok"
- when
- Foo1ok( value < 42 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 2a, ok"
- when
- Foo2ok( value > 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 2b, ok"
- when
- Foo2ok( value <= 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 3a, ok"
- when
- Foo3ok( value > 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 3b, ok"
- when
- Foo3ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 3c, ok"
- when
- Foo3ok( value < 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 4a, ok"
- when
- Foo4ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-rule "Missing int range 4b, ok"
- when
- Foo4ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 5a, ok"
- when
- Foo5ok( value > 41 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 5b, ok"
- when
- Foo5ok( value == 41 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 5c, ok"
- when
- Foo5ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing int range 5d, ok"
- when
- Foo5ok( value < 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 6a, ok"
- when
- not Foo6ok( value >= 42 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 6b, ok"
- when
- not Foo6ok( value < 42 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 7a, ok"
- when
- not Foo7ok( value > 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 7b, ok"
- when
- not Foo7ok( value <= 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 8a, ok"
- when
- not Foo8ok( value > 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 8b, ok"
- when
- not Foo8ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 8c, ok"
- when
- not Foo8ok( value < 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 9a, ok"
- when
- not Foo4ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-rule "Missing not int range 9b, ok"
- when
- not Foo4ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10a, ok"
- when
- not Foo10ok( value > 41 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10b, ok"
- when
- not Foo10ok( value == 41 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10c, ok"
- when
- not Foo10ok( value == 40 )
- then
- System.out.println( "Test" );
-end
-
-rule "Missing not int range 10d, ok"
- when
- not Foo10ok( value < 40 )
- then
- System.out.println( "Test" );
+ # No gap
end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list