[jboss-svn-commits] JBL Code SVN: r30952 - in labs/jbossrules/trunk: drools-core/src/main/java/org/drools/rule and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Jan 5 22:13:03 EST 2010
Author: mark.proctor at jboss.com
Date: 2010-01-05 22:13:03 -0500 (Tue, 05 Jan 2010)
New Revision: 30952
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java
Modified:
labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
Log:
JBRULES-2396 ReturnValueRestriction passes null to evaluator
-fixes nullpointer because wm was not passed.
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DateComparisonTest.java 2010-01-06 03:13:03 UTC (rev 30952)
@@ -0,0 +1,96 @@
+package org.drools.integrationtests;
+
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.GregorianCalendar;
+import java.util.Date;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
+import org.drools.Cheese;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderError;
+import org.drools.builder.KnowledgeBuilderErrors;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
+import org.drools.io.ResourceFactory;
+import org.drools.logger.KnowledgeRuntimeLogger;
+import org.drools.logger.KnowledgeRuntimeLoggerFactory;
+import org.drools.runtime.StatefulKnowledgeSession;
+
+/**
+ * This is a sample class to launch a rule.
+ */
+public class DateComparisonTest extends TestCase {
+
+ public void testDateComparisonThan() throws Exception {
+ List<String> results = new ArrayList<String>();
+ // load up the knowledge base
+ String str = "";
+ str += "package org.drools;\n";
+ str += "dialect \"mvel\"\n";
+ str += "global java.util.List results;\n";
+ str += "rule \"test date greater than\"\n";
+ str += " when\n";
+ str += " $c : Cheese(type == \"Yesterday\")\n";
+ str += " Cheese(type == \"Tomorrow\", usedBy > ($c.usedBy))\n";
+ str += " then\n";
+ str += " results.add( \"test date greater than\" );\n";
+ str += "end\n";
+
+ str += "rule \"test date less than\"\n";
+ str += " when\n";
+ str += " $c : Cheese(type == \"Tomorrow\")\n";
+ str += " Cheese(type == \"Yesterday\", usedBy < ($c.usedBy));\n";
+ str += " then\n";
+ str += " results.add( \"test date less than\" );\n";
+ str += "end\n";
+
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
+ ResourceType.DRL );
+ KnowledgeBuilderErrors errors = kbuilder.getErrors();
+ if ( kbuilder.hasErrors() ) {
+ fail( kbuilder.getErrors().toString() );
+ }
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+ ksession.setGlobal( "results",
+ results );
+ KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newFileLogger( ksession,
+ "test" );
+ // go !
+ Cheese yesterday = new Cheese( "Yesterday" );
+ yesterday.setUsedBy( yesterday() );
+ Cheese tomorrow = new Cheese( "Tomorrow" );
+ tomorrow.setUsedBy( tomorrow() );
+ ksession.insert( yesterday );
+ ksession.insert( tomorrow );
+ ksession.fireAllRules();
+ logger.close();
+ assertEquals( 2,
+ results.size() );
+ assertTrue( results.contains( "test date greater than" ) );
+ assertTrue( results.contains( "test date less than" ) );
+ }
+
+ private Date yesterday() {
+ Calendar c = new GregorianCalendar();
+ c.set( Calendar.DAY_OF_MONTH,
+ c.get( Calendar.DAY_OF_MONTH ) - 1 );
+ return c.getTime();
+ }
+
+ private Date tomorrow() {
+ Calendar c = new GregorianCalendar();
+ c.set( Calendar.DAY_OF_MONTH,
+ c.get( Calendar.DAY_OF_MONTH ) + 1 );
+ return c.getTime();
+ }
+
+}
\ No newline at end of file
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java 2010-01-06 01:22:41 UTC (rev 30951)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/rule/ReturnValueRestriction.java 2010-01-06 03:13:03 UTC (rev 30952)
@@ -221,7 +221,7 @@
final WorkingMemory workingMemory,
final ContextEntry context) {
try {
- return this.evaluator.evaluate( null,
+ return this.evaluator.evaluate( (InternalWorkingMemory)workingMemory,
this.readAccessor,
handle.getObject(),
this.expression.evaluate( handle.getObject(),
More information about the jboss-svn-commits
mailing list