[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