[jboss-svn-commits] JBL Code SVN: r7442 - in labs/jbossrules/trunk: drools-compiler/src/test/java/org/drools/integrationtests drools-compiler/src/test/resources/org/drools/integrationtests drools-core/src/main/java/org/drools/reteoo
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Tue Nov 7 14:20:37 EST 2006
Author: tirelli
Date: 2006-11-07 14:20:25 -0500 (Tue, 07 Nov 2006)
New Revision: 7442
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DoubleQueryWithExists.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/reteoo/QueryTerminalNode.java
Log:
JBRULES-539: fixing QueryTerminalNode.retractTuple method
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 2006-11-07 19:18:19 UTC (rev 7441)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-11-07 19:20:25 UTC (rev 7442)
@@ -3383,4 +3383,88 @@
}
}
+ public void testDoubleQueryWithExists() throws Exception {
+ final PackageBuilder builder = new PackageBuilder();
+ builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_DoubleQueryWithExists.drl" ) ) );
+ final Package pkg = builder.getPackage();
+
+ final RuleBase ruleBase = getRuleBase();
+ ruleBase.addPackage( pkg );
+ final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+ Person p1 = new Person( "p1",
+ "stilton",
+ 20 );
+ p1.setStatus( "europe" );
+ FactHandle c1FactHandle = workingMemory.assertObject( p1 );
+ Person p2 = new Person( "p2",
+ "stilton",
+ 30 );
+ p2.setStatus( "europe" );
+ FactHandle c2FactHandle = workingMemory.assertObject( p2 );
+ Person p3 = new Person( "p3",
+ "stilton",
+ 40 );
+ p3.setStatus( "europe" );
+ FactHandle c3FactHandle = workingMemory.assertObject( p3 );
+ workingMemory.fireAllRules();
+
+ QueryResults queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 2,
+ queryResults.size() );
+
+ // europe=[ 1, 2 ], america=[ 3 ]
+ p3.setStatus( "america" );
+ workingMemory.modifyObject( c3FactHandle,
+ p3 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 1,
+ queryResults.size() );
+
+ // europe=[ 1 ], america=[ 2, 3 ]
+ p2.setStatus( "america" );
+ workingMemory.modifyObject( c2FactHandle,
+ p2 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 1,
+ queryResults.size() );
+
+ // europe=[ ], america=[ 1, 2, 3 ]
+ p1.setStatus( "america" );
+ workingMemory.modifyObject( c1FactHandle,
+ p1 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 2,
+ queryResults.size() );
+
+ // europe=[ 2 ], america=[ 1, 3 ]
+ p2.setStatus( "europe" );
+ workingMemory.modifyObject( c2FactHandle,
+ p2 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 1,
+ queryResults.size() );
+
+ // europe=[ 1, 2 ], america=[ 3 ]
+ p1.setStatus( "europe" );
+ workingMemory.modifyObject( c1FactHandle,
+ p1 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 1,
+ queryResults.size() );
+
+ // europe=[ 1, 2, 3 ], america=[ ]
+ p3.setStatus( "europe" );
+ workingMemory.modifyObject( c3FactHandle,
+ p3 );
+ workingMemory.fireAllRules();
+ queryResults = workingMemory.getQueryResults("2 persons with the same status");
+ assertEquals( 2,
+ queryResults.size() );
+ }
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DoubleQueryWithExists.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DoubleQueryWithExists.drl 2006-11-07 19:18:19 UTC (rev 7441)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DoubleQueryWithExists.drl 2006-11-07 19:20:25 UTC (rev 7442)
@@ -0,0 +1,6 @@
+package org.drools
+
+query "2 persons with the same status"
+ p : Person($status : status, $age : age)
+ exists Person(status == $status, age > $age);
+end
\ No newline at end of file
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_DoubleQueryWithExists.drl
___________________________________________________________________
Name: svn:executable
+ *
Name: svn:eol-style
+ native
Modified: labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2006-11-07 19:18:19 UTC (rev 7441)
+++ labs/jbossrules/trunk/drools-core/src/main/java/org/drools/reteoo/QueryTerminalNode.java 2006-11-07 19:20:25 UTC (rev 7442)
@@ -111,14 +111,10 @@
public void retractTuple(final ReteTuple tuple,
final PropagationContext context,
final InternalWorkingMemory workingMemory) {
+ final LinkedList list = (LinkedList) workingMemory.getNodeMemory( this );
+ list.remove( tuple );
}
- public void modifyTuple(final ReteTuple tuple,
- final PropagationContext context,
- final InternalWorkingMemory workingMemory) {
-
- }
-
public String toString() {
return "[QueryTerminalNode: rule=" + this.rule.getName() + "]";
}
More information about the jboss-svn-commits
mailing list