[jboss-svn-commits] JBL Code SVN: r32946 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue May 18 23:22:33 EDT 2010
Author: mark.proctor at jboss.com
Date: 2010-05-18 23:22:33 -0400 (Tue, 18 May 2010)
New Revision: 32946
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
JBRULES-2240 True modify
-Self Joins had bad index lookup, when seeing if the bucket had changed, if the index value had changed. Use lookup by reference, rather than value. Added integration test.
Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2010-05-19 02:35:37 UTC (rev 32945)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java 2010-05-19 03:22:33 UTC (rev 32946)
@@ -4715,7 +4715,53 @@
assertEquals( 0,
results.size() );
}
+
+ public void testSelfJoinWithIndex() {
+ String drl = "";
+ drl += "package org.test\n";
+ drl += "import org.drools.Person\n";
+ drl += "global java.util.List list\n";
+ drl += "rule test1\n";
+ drl += "when\n";
+ drl += " $p1 : Person( $name : name, $age : age )\n";
+ drl += " $p2 : Person( name == $name, age < $age)\n";
+ drl += "then\n";
+ drl += " list.add( $p1 );\n";
+ drl += "end\n";
+ KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+ kbuilder.add( ResourceFactory.newReaderResource( new StringReader( drl ) ),
+ ResourceType.DRL );
+ KnowledgeBuilderErrors errors = kbuilder.getErrors();
+ if ( errors.size() > 0 ) {
+ for ( KnowledgeBuilderError error : errors ) {
+ System.err.println( error );
+ }
+ throw new IllegalArgumentException( "Could not parse knowledge." );
+ }
+ assertFalse( kbuilder.hasErrors() );
+
+ KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+ kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+ StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+
+ List list = new ArrayList();
+ ksession.setGlobal( "list", list );
+
+ Person p1 = new Person("darth", 30);
+ org.drools.runtime.rule.FactHandle fh1 = ksession.insert( p1 );
+
+ Person p2 = new Person("darth", 25);
+ org.drools.runtime.rule.FactHandle fh2 = ksession.insert( p2 ); // creates activation.
+
+ p1.setName( "yoda" );
+ ksession.update( fh1, p1 ); // creates activation
+
+ ksession.fireAllRules();
+
+ assertEquals( 0, list.size() );
+ }
+
public void testMergingDifferentPackages() throws Exception {
// using the same builder
try {
More information about the jboss-svn-commits
mailing list