[jboss-svn-commits] JBL Code SVN: r14595 - 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
Sun Aug 26 10:03:17 EDT 2007


Author: tirelli
Date: 2007-08-26 10:03:17 -0400 (Sun, 26 Aug 2007)
New Revision: 14595

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
Log:
Adding 'sum' accumulate function test

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-08-26 13:42:55 UTC (rev 14594)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2007-08-26 14:03:17 UTC (rev 14595)
@@ -899,4 +899,71 @@
 
     }
     
+    public void testAccumulateSum() throws Exception {
+        // read in the source
+        final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateSum.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",
+                                                                                                             11 ), new Cheese( "brie",
+                                                                                                                              4 ), new Cheese( "provolone",
+                                                                                                                                               8 )};
+        final Person bob = new Person( "Bob",
+                                       "stilton" );
+
+        final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
+        for ( int i = 0; i < cheese.length; i++ ) {
+            cheeseHandles[i] = wm.insert( cheese[i] );
+        }
+        final FactHandle bobHandle = wm.insert( bob );
+
+        // ---------------- 1st scenario
+        wm.fireAllRules();
+        Assert.assertEquals( 1,
+                             results.size() );
+        Assert.assertEquals( 27,
+                             ((Number) results.get( results.size() - 1 )).intValue() );
+
+        // ---------------- 2nd scenario
+        final int index = 1;
+        cheese[index].setPrice( 3 );
+        wm.update( cheeseHandles[index],
+                   cheese[index] );
+        wm.fireAllRules();
+
+        Assert.assertEquals( 2,
+                             results.size() );
+        Assert.assertEquals( 20,
+                             ((Number) results.get( results.size() - 1 )).intValue() );
+
+        // ---------------- 3rd scenario
+        bob.setLikes( "brie" );
+        wm.update( bobHandle,
+                   bob );
+        wm.fireAllRules();
+
+        Assert.assertEquals( 3,
+                             results.size() );
+        Assert.assertEquals( 15,
+                             ((Number) results.get( results.size() - 1 )).intValue() );
+
+        // ---------------- 4th scenario
+        wm.retract( cheeseHandles[3] );
+        wm.fireAllRules();
+
+        // should not have fired as per constraint
+        Assert.assertEquals( 3,
+                             results.size() );
+
+    }
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl	2007-08-26 14:03:17 UTC (rev 14595)
@@ -0,0 +1,16 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Test sum" salience 80
+    when
+        $person : Person( $likes : likes )
+    	$sum    : Number( doubleValue >= 10 ) 
+    	                       from accumulate( Cheese( type == $likes, $price : price  ),
+                                                sum( $price ) );
+    then
+        results.add( $sum );
+end  


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




More information about the jboss-svn-commits mailing list