[jboss-svn-commits] JBL Code SVN: r14284 - in labs/jbossrules/trunk/drools-compiler/src/test: java/org/drools/integrationtests and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Aug 15 22:52:25 EDT 2007
Author: mark.proctor at jboss.com
Date: 2007-08-15 22:52:25 -0400 (Wed, 15 Aug 2007)
New Revision: 14284
Added:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SpecialString.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NestedCorrelatedRulesWithForall.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
Log:
JBRULES-1085 Rule fires before calling fireAllRules
-Added unit test to show this stuff works
Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SpecialString.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SpecialString.java (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/SpecialString.java 2007-08-16 02:52:25 UTC (rev 14284)
@@ -0,0 +1,17 @@
+package org.drools;
+
+public class SpecialString {
+ private String text;
+
+ public SpecialString(String text) {
+ this.text = text;
+ }
+
+ public String getText() {
+ return text;
+ }
+
+ public String toString() {
+ return (getText() + "[" + super.toString() + "]");
+ }
+}
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-08-16 02:22:38 UTC (rev 14283)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/FirstOrderLogicTest.java 2007-08-16 02:52:25 UTC (rev 14284)
@@ -18,7 +18,9 @@
import org.drools.RuleBase;
import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
+import org.drools.SpecialString;
import org.drools.State;
+import org.drools.StatefulSession;
import org.drools.WorkingMemory;
import org.drools.compiler.DrlParser;
import org.drools.compiler.DroolsParserException;
@@ -641,5 +643,67 @@
Assert.assertEquals( 6,
((List)results.get(0)).size() );
}
+
+ public void testNestedCorelatedRulesWithForall() throws Exception {
+ PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( FirstOrderLogicTest.class.getResourceAsStream( "test_NestedCorrelatedRulesWithForall.drl" ) ) );
+
+ RuleBase rb = RuleBaseFactory.newRuleBase();
+ rb.addPackage( builder.getPackage() );
+ StatefulSession session = rb.newStatefulSession();
+
+ List list1 = new ArrayList();
+ List list2 = new ArrayList();
+ List list3 = new ArrayList();
+ List list4 = new ArrayList();
+
+ session.setGlobal( "list1",
+ list1 );
+ session.setGlobal( "list2",
+ list2 );
+ session.setGlobal( "list3",
+ list3 );
+ session.setGlobal( "list4",
+ list4 );
+
+ SpecialString first42 = new SpecialString( "42" );
+ SpecialString second42 = new SpecialString( "42" );
+ SpecialString world = new SpecialString( "World" );
+
+ System.out.println( "Inserting ..." );
+
+ session.insert( world );
+ session.insert( first42 );
+ session.insert( second42 );
+
+ System.out.println( "Done." );
+
+ System.out.println( "Firing rules ..." );
+
+ // check all lists are empty
+ assertTrue( list1.isEmpty() );
+ assertTrue( list2.isEmpty() );
+ assertTrue( list3.isEmpty() );
+ assertTrue( list4.isEmpty() );
+
+ session.fireAllRules();
+
+ System.out.println( "Done." );
+
+ // check first list is populated correctly
+ assertEquals(2, list1.size() );
+ assertTrue( list1.contains( first42 ));
+ assertTrue( list1.contains( second42 ));
+
+ // check second list is populated correctly
+ assertEquals(1, list2.size() );
+
+ // check third list is populated correctly
+ assertEquals(1, list3.size() );
+
+ // check fourth list is populated correctly
+ assertEquals(0, list4.size() );
+ }
+
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NestedCorrelatedRulesWithForall.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NestedCorrelatedRulesWithForall.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_NestedCorrelatedRulesWithForall.drl 2007-08-16 02:52:25 UTC (rev 14284)
@@ -0,0 +1,45 @@
+package org.test
+
+import org.drools.SpecialString
+import java.util.List
+
+global List list1;
+global List list2;
+global List list3;
+global List list4;
+
+rule "Strange rule1"
+when
+ x : SpecialString() and
+ forall( y : SpecialString(this != x)
+ SpecialString(this == y, text == "World") )
+then
+ list1.add( x );
+end
+
+rule "Strange rule2"
+when
+ exists(x : SpecialString() and
+ forall( y : SpecialString(this != x)
+ SpecialString(this == y, text == "World") ) )
+then
+ list2.add( "true" );
+end
+
+rule "Strange rule3"
+when
+ not( exists(x : SpecialString() and
+ forall( y : SpecialString(this != x)
+ SpecialString(this == y, text == "Universe") ) ) )
+then
+ list3.add( "true" );
+end
+
+rule "Strange rule4"
+when
+ not( exists(x : SpecialString() and
+ forall( y : SpecialString(this != x)
+ SpecialString(this == y ) ) ) )
+then
+ list4.add( "true" );
+end
\ No newline at end of file
More information about the jboss-svn-commits
mailing list