[jboss-svn-commits] JBL Code SVN: r34588 - in labs/jbossrules/branches/5.1.x/drools-core/src: test/java/org/drools/reteoo/test/dsl and 1 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Fri Aug 6 23:14:31 EDT 2010
Author: tirelli
Date: 2010-08-06 23:14:31 -0400 (Fri, 06 Aug 2010)
New Revision: 34588
Added:
labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest2.nodeTestCase
Modified:
labs/jbossrules/branches/5.1.x/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
labs/jbossrules/branches/5.1.x/drools-core/src/test/java/org/drools/reteoo/test/dsl/ExistsNodeStep.java
labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeAssertRetractTest.nodeTestCase
labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeIndexTest.nodeTestCase
labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest.nodeTestCase
labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/NotNodeModifyTest2.nodeTestCase
Log:
JBRULES-2614: merging fix into 5.1.1 branch
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/main/java/org/drools/reteoo/ExistsNode.java 2010-08-07 03:14:31 UTC (rev 34588)
@@ -345,33 +345,33 @@
break;
}
}
+ }
- if ( leftTuple.getBlocker() == null ) {
- // not blocked
- memory.getLeftTupleMemory().add( leftTuple ); // add to memory so other fact handles can attempt to match
+ if ( leftTuple.getBlocker() == null ) {
+ // not blocked
+ memory.getLeftTupleMemory().add( leftTuple ); // add to memory so other fact handles can attempt to match
- if ( leftTuple.firstChild != null ) {
- // with previous children, retract
- this.sink.propagateRetractLeftTuple( leftTuple,
- context,
- workingMemory );
- }
- // with no previous children. do nothing.
- } else if ( leftTuple.firstChild == null ) {
- // blocked, with no previous children, assert
- this.sink.propagateAssertLeftTuple( leftTuple,
- context,
- workingMemory,
- true );
- } else {
- // blocked, with previous children, modify
- this.sink.propagateModifyChildLeftTuple( leftTuple,
- context,
- workingMemory,
- true );
+ if ( leftTuple.firstChild != null ) {
+ // with previous children, retract
+ this.sink.propagateRetractLeftTuple( leftTuple,
+ context,
+ workingMemory );
}
+ // with no previous children. do nothing.
+ } else if ( leftTuple.firstChild == null ) {
+ // blocked, with no previous children, assert
+ this.sink.propagateAssertLeftTuple( leftTuple,
+ context,
+ workingMemory,
+ true );
+ } else {
+ // blocked, with previous children, modify
+ this.sink.propagateModifyChildLeftTuple( leftTuple,
+ context,
+ workingMemory,
+ true );
}
-
+
this.constraints.resetTuple( memory.getContext() );
}
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/test/java/org/drools/reteoo/test/dsl/ExistsNodeStep.java
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/java/org/drools/reteoo/test/dsl/ExistsNodeStep.java 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/java/org/drools/reteoo/test/dsl/ExistsNodeStep.java 2010-08-07 03:14:31 UTC (rev 34588)
@@ -17,6 +17,7 @@
package org.drools.reteoo.test.dsl;
import java.beans.IntrospectionException;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
@@ -29,7 +30,9 @@
import org.drools.reteoo.builder.BuildContext;
import org.drools.rule.BehaviorManager;
import org.drools.rule.Declaration;
+import org.drools.rule.Pattern;
import org.drools.spi.BetaNodeFieldConstraint;
+import org.mockito.Mockito;
public class ExistsNodeStep
implements
@@ -53,28 +56,37 @@
LeftTupleSource leftTupleSource;
if ( "mock".equals( leftInput ) ) {
- leftTupleSource = new MockTupleSource( buildContext.getNextId() );
+ leftTupleSource = Mockito.mock( LeftTupleSource.class );
} else {
leftTupleSource = (LeftTupleSource) context.get( leftInput );
}
ObjectSource rightObjectSource;
if ( "mock".equals( rightInput ) ) {
- rightObjectSource = new MockObjectSource( buildContext.getNextId() );
+ rightObjectSource = Mockito.mock( ObjectSource.class );
} else {
rightObjectSource = (ObjectSource) context.get( rightInput );
}
a = args.get( 1 );
- String fieldName = a[0].trim();
- String operator = a[1].trim();
- String var = a[2].trim();
+ String type = a[0].trim();
+ String fieldName = a[1].trim();
+ String operator = a[2].trim();
+ String var = a[3].trim();
+ Pattern rightSidePattern = null;
+ try {
+ rightSidePattern = reteTesterHelper.getPattern( 1,
+ type );
+ } catch ( Exception e ) {
+ throw new IllegalArgumentException( "Not possible to process arguments: "+Arrays.toString( a ));
+ }
+
Declaration declr = (Declaration) context.get( var );
BetaNodeFieldConstraint betaConstraint;
try {
- betaConstraint = this.reteTesterHelper.getBoundVariableConstraint( declr.getPattern(),
+ betaConstraint = this.reteTesterHelper.getBoundVariableConstraint( rightSidePattern,
fieldName,
declr,
operator );
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeAssertRetractTest.nodeTestCase
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeAssertRetractTest.nodeTestCase 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeAssertRetractTest.nodeTestCase 2010-08-07 03:14:31 UTC (rev 34588)
@@ -13,7 +13,7 @@
p1, 0, org.drools.Person, age;
ExistsNode:
exists1, lian1, otnRight1;
- age, !=, p1;
+ org.drools.Person, age, !=, p1;
JoinNode:
join2, exists1, otnRight2;
age, !=, p1;
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeIndexTest.nodeTestCase
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeIndexTest.nodeTestCase 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeIndexTest.nodeTestCase 2010-08-07 03:14:31 UTC (rev 34588)
@@ -13,7 +13,7 @@
p1, 0, org.drools.Person, age;
ExistsNode:
not1, lian1, otnRight1;
- age, ==, p1;
+ org.drools.Person, age, ==, p1;
JoinNode:
join2, not1, otnRight2;
age, ==, p1;
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest.nodeTestCase
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest.nodeTestCase 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest.nodeTestCase 2010-08-07 03:14:31 UTC (rev 34588)
@@ -13,7 +13,7 @@
p1, 0, org.drools.Person, age;
ExistsNode:
not1, lian1, otnRight1;
- age, !=, p1;
+ org.drools.Person, age, !=, p1;
JoinNode:
join2, not1, otnRight2;
age, !=, p1;
Copied: labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest2.nodeTestCase (from rev 34551, labs/jbossrules/trunk/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest2.nodeTestCase)
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest2.nodeTestCase (rev 0)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/ExistsNodeModifyTest2.nodeTestCase 2010-08-07 03:14:31 UTC (rev 34588)
@@ -0,0 +1,43 @@
+TestCase "Exists node modify test 2"
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+Setup
+ Binding:
+ $likes, 0, Person, likes;
+ ExistsNode:
+ exists, mock, mock;
+ Cheese, type, ==, $likes;
+ LeftTupleSink:
+ sink, exists;
+ Facts:
+ new Person('darth', 35, "brie"), // h0
+ new Person('bobba', 36, 'stilton'), // h1
+ new Cheese('brie', 10), // h2
+ new Cheese('brie', 12), // h3
+ new Cheese('stilton', 15), // h4
+ new Cheese('brie', 12); // h5
+
+Test "exists node test 1 left, 1 right and modify"
+ assert:
+ exists, [[h0]];
+ exists:
+ leftMemory, [[h0]];
+ rightMemory, [];
+ assert:
+ exists, [h2];
+ exists:
+ leftMemory, []; // h0 was blocked by h2, so it was removed from the node memory
+ rightMemory, [h2];
+ sink:
+ verify, assertLeft, count, 1;
+ verify, assertLeft, tuple0, isTuple( [h0] );
+ verify, modifyLeft, count, 0;
+ modify:
+ exists, [[h0]];
+ sink:
+ verify, assertLeft, count, 1; // still 1
+ verify, modifyLeft, count, 1; // modify was propagated
+ verify, modifyLeft, tuple0, isTuple( [h0] );
+
Modified: labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/NotNodeModifyTest2.nodeTestCase
===================================================================
--- labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/NotNodeModifyTest2.nodeTestCase 2010-08-07 03:07:12 UTC (rev 34587)
+++ labs/jbossrules/branches/5.1.x/drools-core/src/test/resources/org/drools/reteoo/test/NotNodeModifyTest2.nodeTestCase 2010-08-07 03:14:31 UTC (rev 34588)
@@ -9,8 +9,8 @@
LeftTupleSink:
sink, not;
Facts:
- new Person('darth', 35), // h0
- new Person('bobba', 35), // h1
+ new Person('darth', 35, "brie"), // h0
+ new Person('bobba', 35, "stilton"), // h1
new Cheese('stilton', 10); // h2
/**
@@ -42,3 +42,21 @@
verify, retractLeft, count, 1;
verify, modifyLeft, count, 0; // not node does not propagate a modify from the right
+Test "not node test 1 left and modify"
+ assert:
+ not, [[h0]];
+ not:
+ leftMemory, [[h0]];
+ rightMemory, [];
+ sink:
+ verify, assertLeft, count, 1;
+ verify, assertLeft, tuple0, isTuple( [h0] );
+ verify, modifyLeft, count, 0;
+ modify:
+ not, [[h0]];
+ sink:
+ verify, assertLeft, count, 1; // still 1
+ verify, modifyLeft, count, 1; // modify was propagated
+ verify, modifyLeft, tuple0, isTuple( [h0] );
+
+
\ No newline at end of file
More information about the jboss-svn-commits
mailing list