[jboss-svn-commits] JBL Code SVN: r12900 - in labs/jbossrules/trunk/drools-compiler/src/test: resources/org/drools/integrationtests and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jun 27 16:37:19 EDT 2007


Author: tirelli
Date: 2007-06-27 16:37:19 -0400 (Wed, 27 Jun 2007)
New Revision: 12900

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateWithFromChaining.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
Log:
JBRULES-546: adding another test for 'accumulate' with 'from' chaining

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2007-06-27 20:30:40 UTC (rev 12899)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2007-06-27 20:37:19 UTC (rev 12900)
@@ -682,4 +682,78 @@
 
     }
     
+    public void testAccumulateWithFromChaining() throws Exception {
+        // read in the source
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateWithFromChaining.drl" ) );
+        final RuleBase ruleBase = loadRuleBase( reader );
+
+        final WorkingMemory wm = ruleBase.newStatefulSession();
+        final List results = new ArrayList();
+
+        wm.setGlobal( "results",
+                      results );
+
+        final Cheese[] cheese = new Cheese[]{new Cheese( "stilton",
+                                                         8 ), new Cheese( "stilton",
+                                                                           10 ), new Cheese( "stilton",
+                                                                                            9 ), new Cheese( "brie",
+                                                                                                              4 ), new Cheese( "brie",
+                                                                                                                                1 ), new Cheese( "provolone",
+                                                                                                                                                  8 )};
+
+        Cheesery cheesery = new Cheesery();
+        
+        for( int i = 0; i < cheese.length; i++ ) {
+            cheesery.addCheese( cheese[i] );
+        }
+        
+        FactHandle cheeseryHandle = wm.insert( cheesery );
+        
+        final Person bob = new Person( "Bob",
+                                       "stilton" );
+
+        final FactHandle bobHandle = wm.insert( bob );
+
+        // ---------------- 1st scenario
+        wm.fireAllRules();
+        // one fire, as per rule constraints
+        Assert.assertEquals( 1,
+                             results.size() );
+        Assert.assertEquals( 3,
+                             ((List) results.get( results.size() - 1 )).size() );
+
+        // ---------------- 2nd scenario
+        final int index = 1;
+        cheese[index].setType( "brie" );
+        wm.update( cheeseryHandle,
+                   cheesery );
+        wm.fireAllRules();
+
+        // no fire
+        Assert.assertEquals( 1,
+                             results.size() );
+
+        // ---------------- 3rd scenario
+        bob.setLikes( "brie" );
+        wm.update( bobHandle,
+                   bob );
+        wm.fireAllRules();
+
+        // 2 fires
+        Assert.assertEquals( 2,
+                             results.size() );
+        Assert.assertEquals( 3,
+                             ((List) results.get( results.size() - 1 )).size() );
+
+        // ---------------- 4th scenario
+        cheesery.getCheeses().remove( cheese[3] );
+        wm.update( cheeseryHandle,
+                   cheesery );
+        wm.fireAllRules();
+
+        // should not have fired as per constraint
+        Assert.assertEquals( 2,
+                             results.size() );
+
+    }
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateWithFromChaining.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateWithFromChaining.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateWithFromChaining.drl	2007-06-27 20:37:19 UTC (rev 12900)
@@ -0,0 +1,19 @@
+package org.drools;
+
+import java.util.List;
+import java.util.ArrayList;
+
+global java.util.List results;
+
+rule "Accumulate with From Chaining" salience 80
+    when
+        $cheesery : Cheesery()
+        $person   : Person( $likes : likes )
+    	$list     : List( size > 2 ) 
+    	                       from accumulate( $cheese : Cheese( type == $likes  ) from $cheesery.getCheeses(),
+                                                init( List l = new ArrayList(); ),
+                                                action( l.add( $cheese ); )
+                                                result( l ) )
+    then
+        results.add( $list );
+end  


Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateWithFromChaining.drl
___________________________________________________________________
Name: svn:executable
   + *




More information about the jboss-svn-commits mailing list