[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