[jboss-svn-commits] JBL Code SVN: r13112 - labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Thu Jul 5 13:12:26 EDT 2007
Author: tirelli
Date: 2007-07-05 13:12:26 -0400 (Thu, 05 Jul 2007)
New Revision: 13112
Modified:
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
Log:
JBRULES-967: adding unit tests for sequential mode
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-07-05 15:35:35 UTC (rev 13111)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/AccumulateNodeTest.java 2007-07-05 17:12:26 UTC (rev 13112)
@@ -18,6 +18,7 @@
import junit.framework.Assert;
import org.drools.DroolsTestCase;
+import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.base.ClassObjectType;
import org.drools.common.DefaultFactHandle;
@@ -25,8 +26,8 @@
import org.drools.common.InternalWorkingMemory;
import org.drools.common.PropagationContextImpl;
import org.drools.rule.Accumulate;
+import org.drools.rule.Declaration;
import org.drools.rule.Pattern;
-import org.drools.rule.Declaration;
import org.drools.rule.Rule;
import org.drools.spi.MockConstraint;
import org.drools.spi.ObjectType;
@@ -73,9 +74,6 @@
final ObjectType srcObjType = new ClassObjectType( String.class );
final Pattern sourcePattern = new Pattern( 0,
srcObjType );
- final ObjectType resultObjType = new ClassObjectType( String.class );
- final Pattern resultPattern = new Pattern( 1,
- resultObjType );
this.accumulate = new Accumulate( sourcePattern,
new Declaration[0],
new Declaration[0],
@@ -379,4 +377,57 @@
assertNotNull( memory );
}
+ /**
+ * Test just tuple assertions
+ *
+ * @throws AssertionException
+ */
+ public void testAssertTupleSequentialMode() throws Exception {
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setSequential( true );
+
+ this.workingMemory = new ReteooWorkingMemory( 1,
+ (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
+
+ this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
+
+ final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
+ final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
+
+ final ReteTuple tuple0 = new ReteTuple( f0 );
+
+ this.node.assertObject( f0,
+ this.context,
+ this.workingMemory );
+ this.node.assertObject( f1,
+ this.context,
+ this.workingMemory );
+
+ // assert tuple, should not add to left memory, since we are in sequential mode
+ this.node.assertTuple( tuple0,
+ this.context,
+ this.workingMemory );
+ // check memories
+ assertNull( this.memory.getTupleMemory() );
+ assertEquals( 2,
+ this.memory.getFactHandleMemory().size() );
+ Assert.assertEquals( "Wrong number of elements in matching objects list ",
+ 2,
+ this.accumulator.getMatchingObjects().size() );
+
+ // assert tuple, should not add left memory
+ final ReteTuple tuple1 = new ReteTuple( f1 );
+ this.node.assertTuple( tuple1,
+ this.context,
+ this.workingMemory );
+ assertNull( this.memory.getTupleMemory() );
+ Assert.assertEquals( "Wrong number of elements in matching objects list ",
+ 2,
+ this.accumulator.getMatchingObjects().size() );
+
+ Assert.assertEquals( "Two tuples should have been propagated",
+ 2,
+ this.sink.getAsserted().size() );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java 2007-07-05 15:35:35 UTC (rev 13111)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/CollectNodeTest.java 2007-07-05 17:12:26 UTC (rev 13112)
@@ -22,6 +22,7 @@
import junit.framework.Assert;
import org.drools.DroolsTestCase;
+import org.drools.RuleBaseConfiguration;
import org.drools.RuleBaseFactory;
import org.drools.base.ClassObjectType;
import org.drools.common.DefaultFactHandle;
@@ -364,4 +365,52 @@
assertNotNull( memory );
}
+ public void testAssertTupleSequentialMode() {
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setSequential( true );
+
+ this.workingMemory = new ReteooWorkingMemory( 1,
+ (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
+
+ this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
+
+ final DefaultFactHandle f0 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "cheese" );
+ final DefaultFactHandle f1 = (DefaultFactHandle) this.workingMemory.getFactHandleFactory().newFactHandle( "other cheese" );
+
+ final ReteTuple tuple0 = new ReteTuple( f0 );
+
+ this.node.assertObject( f0,
+ this.contextAssert,
+ this.workingMemory );
+ this.node.assertObject( f1,
+ this.contextAssert,
+ this.workingMemory );
+
+ // assert tuple, should not add to left memory, since we are in sequential mode
+ this.node.assertTuple( tuple0,
+ this.contextAssert,
+ this.workingMemory );
+ // check memories
+ assertNull( this.memory.getTupleMemory() );
+ assertEquals( 2,
+ this.memory.getFactHandleMemory().size() );
+ Assert.assertEquals( "Wrong number of elements in matching objects list ",
+ 2,
+ ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 0 ))[0]).get( 1 )).getObject()).size() );
+
+ // assert tuple, should not add to left memory, since we are in sequential mode
+ final ReteTuple tuple1 = new ReteTuple( f1 );
+ this.node.assertTuple( tuple1,
+ this.contextAssert,
+ this.workingMemory );
+ assertNull( this.memory.getTupleMemory() );
+ Assert.assertEquals( "Wrong number of elements in matching objects list ",
+ 2,
+ ((Collection) ((DefaultFactHandle) ((Tuple) ((Object[]) this.sink.getAsserted().get( 1 ))[0]).get( 1 )).getObject()).size() );
+
+ Assert.assertEquals( "Two tuples should have been propagated",
+ 2,
+ this.sink.getAsserted().size() );
+ }
+
}
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2007-07-05 15:35:35 UTC (rev 13111)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/JoinNodeTest.java 2007-07-05 17:12:26 UTC (rev 13112)
@@ -190,9 +190,6 @@
this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
- this.workingMemory = new ReteooWorkingMemory( 1,
- (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
-
final DefaultFactHandle f0 = new DefaultFactHandle( 0,
"cheese" );
final ReteTuple tuple0 = new ReteTuple( f0 );
@@ -211,7 +208,7 @@
assertNull( this.memory.getTupleMemory() );
- assertEquals( 0,
+ assertEquals( 1,
this.memory.getFactHandleMemory().size() );
assertEquals( new ReteTuple( tuple0,
Modified: labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java
===================================================================
--- labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2007-07-05 15:35:35 UTC (rev 13111)
+++ labs/jbossrules/trunk/drools-core/src/test/java/org/drools/reteoo/NotNodeTest.java 2007-07-05 17:12:26 UTC (rev 13112)
@@ -308,5 +308,53 @@
assertEquals( 0,
constraints.length );
}
+
+ /**
+ * Test just tuple assertions
+ *
+ * @throws AssertionException
+ */
+ public void testAssertTupleSequentialMode() throws Exception {
+ RuleBaseConfiguration conf = new RuleBaseConfiguration();
+ conf.setSequential( true );
+ this.workingMemory = new ReteooWorkingMemory( 1,
+ (ReteooRuleBase) RuleBaseFactory.newRuleBase( conf ) );
+
+ // override setup, so its working in sequential mode
+ this.node = new NotNode( 15,
+ this.tupleSource,
+ this.objectSource,
+ new DefaultBetaConstraints( new BetaNodeFieldConstraint[]{this.constraint},
+ conf ) );
+
+ this.node.addTupleSink( this.sink );
+
+ this.memory = (BetaMemory) this.workingMemory.getNodeMemory( this.node );
+
+ final DefaultFactHandle f0 = new DefaultFactHandle( 0,
+ "cheese" );
+ final ReteTuple tuple0 = new ReteTuple( f0 );
+
+ this.node.assertObject( f0,
+ this.context,
+ this.workingMemory );
+
+ // assert tuple
+ this.node.assertTuple( tuple0,
+ this.context,
+ this.workingMemory );
+
+ assertEquals( 0,
+ this.sink.getAsserted().size() );
+
+ assertNull( this.memory.getTupleMemory() );
+
+ assertEquals( 1,
+ this.memory.getFactHandleMemory().size() );
+
+ }
+
+
+
}
\ No newline at end of file
More information about the jboss-svn-commits
mailing list