[jboss-svn-commits] JBL Code SVN: r10185 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Mar 14 14:49:07 EDT 2007
Author: tirelli
Date: 2007-03-14 14:49:07 -0400 (Wed, 14 Mar 2007)
New Revision: 10185
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Guess.java
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/RandomNumber.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NumberComparisons.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
Log:
JBRULES-736: improving type resolution to allow number comparisons between different number classes and also comparisons to primitives
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Guess.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Guess.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Guess.java 2007-03-14 18:49:07 UTC (rev 10185)
@@ -0,0 +1,18 @@
+package org.drools;
+
+public class Guess
+{
+
+ private Integer value;
+
+ public void setValue(Integer guess)
+ {
+ this.value = guess;
+ }
+
+ public Integer getValue()
+ {
+ return value;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/Guess.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ id author date revision
Name: svn:eol-style
+ native
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/RandomNumber.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/RandomNumber.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/RandomNumber.java 2007-03-14 18:49:07 UTC (rev 10185)
@@ -0,0 +1,23 @@
+package org.drools;
+
+import java.util.Random;
+
+public class RandomNumber
+{
+ private int randomNumber;
+
+ public void begin()
+ {
+ randomNumber = new Random().nextInt(100);
+ }
+
+ public void setValue( int value ) {
+ this.randomNumber = value;
+ }
+
+ public int getValue()
+ {
+ return randomNumber;
+ }
+
+}
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/RandomNumber.java
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:keywords
+ id author date revision
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-03-14 17:45:52 UTC (rev 10184)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2007-03-14 18:49:07 UTC (rev 10185)
@@ -49,6 +49,7 @@
import org.drools.FactB;
import org.drools.FactHandle;
import org.drools.FromTestClass;
+import org.drools.Guess;
import org.drools.IndexedNumber;
import org.drools.Order;
import org.drools.OrderItem;
@@ -58,6 +59,7 @@
import org.drools.Primitives;
import org.drools.QueryResult;
import org.drools.QueryResults;
+import org.drools.RandomNumber;
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.Sensor;
@@ -4135,5 +4137,60 @@
}
}
+ public void testNumberComparisons() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_NumberComparisons.drl" ) ) );
+ final Package pkg = builder.getPackage();
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+ final List list = new ArrayList();
+ workingMemory.setGlobal( "results",
+ list );
+
+ // asserting the sensor object
+ RandomNumber rn = new RandomNumber();
+ rn.setValue( 10 );
+ workingMemory.assertObject( rn );
+
+ Guess guess = new Guess();
+ guess.setValue( new Integer(5) );
+
+ FactHandle handle = workingMemory.assertObject( guess );
+
+ workingMemory.fireAllRules();
+
+ // HIGHER
+ assertEquals( 1,
+ list.size() );
+ assertEquals( "HIGHER",
+ list.get( 0 ) );
+
+ guess.setValue( new Integer(15) );
+ workingMemory.modifyObject( handle, guess );
+
+ workingMemory.fireAllRules();
+
+ // LOWER
+ assertEquals( 2,
+ list.size() );
+ assertEquals( "LOWER",
+ list.get( 1 ) );
+
+ guess.setValue( new Integer(10) );
+ workingMemory.modifyObject( handle, guess );
+
+ workingMemory.fireAllRules();
+
+ // CORRECT
+ assertEquals( 3,
+ list.size() );
+ assertEquals( "CORRECT",
+ list.get( 2 ) );
+
+
+ }
+
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NumberComparisons.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NumberComparisons.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NumberComparisons.drl 2007-03-14 18:49:07 UTC (rev 10185)
@@ -0,0 +1,31 @@
+package org.drools;
+
+global java.util.List results;
+
+rule High
+ when
+ RandomNumber(randomValue:value)
+ // literal constraint
+ Guess(guess: value > 10)
+ then
+ results.add("LOWER");
+end
+
+rule Low
+ when
+ RandomNumber(randomValue:value)
+ // return value constraint
+ Guess(guess: value < ( 10 ) )
+ then
+ results.add("HIGHER");
+end
+
+rule Win
+ when
+ RandomNumber(randomValue:value)
+ // variable constraint
+ Guess(value==randomValue)
+ then
+ results.add("CORRECT");
+end
+
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NumberComparisons.drl
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java 2007-03-14 17:45:52 UTC (rev 10184)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/base/ValueType.java 2007-03-14 18:49:07 UTC (rev 10185)
@@ -37,28 +37,28 @@
// wrapper types
public static final ValueType CHAR_TYPE = new ValueType( "Character",
Character.class,
- ObjectFactory.getInstance() );
+ CharacterFactory.getInstance() );
public static final ValueType BYTE_TYPE = new ValueType( "Byte",
Byte.class,
- ObjectFactory.getInstance() );
+ ByteFactory.getInstance() );
public static final ValueType SHORT_TYPE = new ValueType( "Short",
Short.class,
- ObjectFactory.getInstance() );
+ ShortFactory.getInstance() );
public static final ValueType INTEGER_TYPE = new ValueType( "Integer",
Integer.class,
- ObjectFactory.getInstance() );
+ IntegerFactory.getInstance() );
public static final ValueType LONG_TYPE = new ValueType( "Long",
Long.class,
- ObjectFactory.getInstance() );
+ LongFactory.getInstance() );
public static final ValueType FLOAT_TYPE = new ValueType( "Float",
Float.class,
- ObjectFactory.getInstance() );
+ FloatFactory.getInstance() );
public static final ValueType DOUBLE_TYPE = new ValueType( "Double",
Double.class,
- ObjectFactory.getInstance() );
+ DoubleFactory.getInstance() );
public static final ValueType BOOLEAN_TYPE = new ValueType( "Boolean",
Boolean.class,
- ObjectFactory.getInstance() );
+ BooleanFactory.getInstance() );
// primitive types
public static final ValueType PCHAR_TYPE = new ValueType( "char",
Character.TYPE,
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2007-03-14 17:45:52 UTC (rev 10184)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/VariableRestriction.java 2007-03-14 18:49:07 UTC (rev 10185)
@@ -107,18 +107,15 @@
}
private final VariableContextEntry createContextEntry(FieldExtractor fieldExtractor) {
- final Class classType = fieldExtractor.getValueType().getClassType();
- if ( classType.isPrimitive() ) {
- if ( classType == Boolean.TYPE ) {
- return new BooleanVariableContextEntry( fieldExtractor,
- this.declaration );
- } else if ( (classType == Double.TYPE) || (classType == Float.TYPE) ) {
- return new DoubleVariableContextEntry( fieldExtractor,
- this.declaration );
- } else {
- return new LongVariableContextEntry( fieldExtractor,
- this.declaration );
- }
+ if ( fieldExtractor.getValueType().isBoolean() ) {
+ return new BooleanVariableContextEntry( fieldExtractor,
+ this.declaration );
+ } else if ( fieldExtractor.getValueType().isFloatNumber() ) {
+ return new DoubleVariableContextEntry( fieldExtractor,
+ this.declaration );
+ } else if ( fieldExtractor.getValueType().isIntegerNumber() ) {
+ return new LongVariableContextEntry( fieldExtractor,
+ this.declaration );
} else {
return new ObjectVariableContextEntry( fieldExtractor,
this.declaration );
More information about the jboss-svn-commits
mailing list