[jboss-svn-commits] JBL Code SVN: r14605 - 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 14:35:49 EDT 2007
Author: tirelli
Date: 2007-08-26 14:35:49 -0400 (Sun, 26 Aug 2007)
New Revision: 14605
Added:
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateAverageMVEL.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateCountMVEL.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMaxMVEL.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMinMVEL.drl
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSumMVEL.drl
Modified:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java
labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl
Log:
Adding test for accumulate functions using mvel dialect
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 18:27:19 UTC (rev 14604)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java 2007-08-26 18:35:49 UTC (rev 14605)
@@ -407,9 +407,9 @@
}
- public void testAccumulateAverage() throws Exception {
+ public void testAccumulateWithFromChaining() throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateAverage.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateWithFromChaining.drl" ) );
final RuleBase ruleBase = loadRuleBase( reader );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -419,39 +419,44 @@
results );
final Cheese[] cheese = new Cheese[]{new Cheese( "stilton",
- 10 ), new Cheese( "stilton",
- 2 ), new Cheese( "stilton",
- 11 ), new Cheese( "brie",
- 15 ), new Cheese( "brie",
- 17 ), new Cheese( "provolone",
- 8 )};
+ 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[] 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();
- // no fire, as per rule constraints
- Assert.assertEquals( 0,
+ // 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].setPrice( 9 );
- wm.update( cheeseHandles[index],
- cheese[index] );
+ cheese[index].setType( "brie" );
+ wm.update( cheeseryHandle,
+ cheesery );
wm.fireAllRules();
- // 1 fire
+ // no fire
Assert.assertEquals( 1,
results.size() );
- Assert.assertEquals( 10,
- ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 3rd scenario
bob.setLikes( "brie" );
@@ -462,12 +467,13 @@
// 2 fires
Assert.assertEquals( 2,
results.size() );
- Assert.assertEquals( 16,
- ((Number) results.get( results.size() - 1 )).intValue() );
+ Assert.assertEquals( 3,
+ ((List) results.get( results.size() - 1 )).size() );
// ---------------- 4th scenario
- wm.retract( cheeseHandles[3] );
- wm.retract( cheeseHandles[4] );
+ cheesery.getCheeses().remove( cheese[3] );
+ wm.update( cheeseryHandle,
+ cheesery );
wm.fireAllRules();
// should not have fired as per constraint
@@ -476,24 +482,204 @@
}
- public void testAccumulateMax() throws Exception {
+ public void testMVELAccumulate2WM() throws Exception {
+
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMax.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMVEL.drl" ) );
final RuleBase ruleBase = loadRuleBase( reader );
+ final WorkingMemory wm1 = ruleBase.newStatefulSession();
+ final List results1 = new ArrayList();
+
+ wm1.setGlobal( "results",
+ results1 );
+
+ final WorkingMemory wm2 = ruleBase.newStatefulSession();
+ final List results2 = new ArrayList();
+
+ wm2.setGlobal( "results",
+ results2 );
+
+ wm1.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm1.insert( new Person( "Mark",
+ "provolone" ) );
+
+ wm2.insert( new Person( "Bob",
+ "stilton",
+ 20 ) );
+ wm2.insert( new Person( "Mark",
+ "provolone" ) );
+
+ wm1.insert( new Cheese( "stilton",
+ 10 ) );
+ wm1.insert( new Cheese( "brie",
+ 5 ) );
+ wm2.insert( new Cheese( "stilton",
+ 10 ) );
+ wm1.insert( new Cheese( "provolone",
+ 150 ) );
+ wm2.insert( new Cheese( "brie",
+ 5 ) );
+ wm2.insert( new Cheese( "provolone",
+ 150 ) );
+ wm1.fireAllRules();
+
+ wm2.fireAllRules();
+
+ Assert.assertEquals( new Integer( 165 ),
+ results1.get( 0 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results1.get( 1 ) );
+ Assert.assertEquals( new Integer( 150 ),
+ results1.get( 2 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results1.get( 3 ) );
+ Assert.assertEquals( new Integer( 210 ),
+ results1.get( 4 ) );
+
+ Assert.assertEquals( new Integer( 165 ),
+ results2.get( 0 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results2.get( 1 ) );
+ Assert.assertEquals( new Integer( 150 ),
+ results2.get( 2 ) );
+ Assert.assertEquals( new Integer( 10 ),
+ results2.get( 3 ) );
+ Assert.assertEquals( new Integer( 210 ),
+ results2.get( 4 ) );
+ }
+
+ public void testAccumulateInnerClass() throws Exception {
+
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateInnerClass.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
final WorkingMemory wm = ruleBase.newStatefulSession();
final List results = new ArrayList();
wm.setGlobal( "results",
results );
+ wm.insert( new OuterClass.InnerClass( 10 ) );
+ wm.insert( new OuterClass.InnerClass( 5 ) );
+
+ wm.fireAllRules();
+
+ Assert.assertEquals( new Integer( 15 ),
+ results.get( 0 ) );
+ }
+
+ public void testAccumulateReturningNull() throws Exception {
+
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNull.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm = ruleBase.newStatefulSession();
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+
+ try {
+ wm.insert( new Cheese( "stilton", 10 ) );
+
+ fail( "Should have raised an exception because accumulate is returning null");
+ } catch( RuntimeDroolsException rde ) {
+ // success, working fine
+ } catch( Exception e ) {
+ e.printStackTrace();
+ fail( "Should have raised a DroolsRuntimeException instead of "+e);
+ }
+
+ }
+
+ public void testAccumulateReturningNullMVEL() throws Exception {
+
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNullMVEL.drl" ) );
+ final RuleBase ruleBase = loadRuleBase( reader );
+
+ final WorkingMemory wm = ruleBase.newStatefulSession();
+ final List results = new ArrayList();
+
+ wm.setGlobal( "results",
+ results );
+
+ try {
+ wm.insert( new Cheese( "stilton", 10 ) );
+
+ fail( "Should have raised an exception because accumulate is returning null");
+ } catch( RuntimeDroolsException rde ) {
+ // success, working fine
+ } catch( Exception e ) {
+ e.printStackTrace();
+ fail( "Should have raised a DroolsRuntimeException instead of "+e);
+ }
+
+ }
+
+ public void testAccumulateSumJava() throws Exception {
+ execTestAccumulateSum( "test_AccumulateSum.drl" );
+ }
+
+ public void testAccumulateSumMVEL() throws Exception {
+ execTestAccumulateSum( "test_AccumulateSumMVEL.drl" );
+ }
+
+ public void testAccumulateCountJava() throws Exception {
+ execTestAccumulateCount( "test_AccumulateCount.drl" );
+ }
+
+ public void testAccumulateCountMVEL() throws Exception {
+ execTestAccumulateCount( "test_AccumulateCountMVEL.drl" );
+ }
+
+ public void testAccumulateAverageJava() throws Exception {
+ execTestAccumulateAverage( "test_AccumulateAverage.drl" );
+ }
+
+ public void testAccumulateAverageMVEL() throws Exception {
+ execTestAccumulateAverage( "test_AccumulateAverageMVEL.drl" );
+ }
+
+ public void testAccumulateMinJava() throws Exception {
+ execTestAccumulateMin( "test_AccumulateMin.drl" );
+ }
+
+ public void testAccumulateMinMVEL() throws Exception {
+ execTestAccumulateMin( "test_AccumulateMinMVEL.drl" );
+ }
+
+ public void testAccumulateMaxJava() throws Exception {
+ execTestAccumulateMax( "test_AccumulateMax.drl" );
+ }
+
+ public void testAccumulateMaxMVEL() throws Exception {
+ execTestAccumulateMax( "test_AccumulateMaxMVEL.drl" );
+ }
+
+ public void execTestAccumulateSum(String fileName) throws Exception {
+ // read in the source
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
+ 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",
- 4 ), new Cheese( "stilton",
- 2 ), new Cheese( "stilton",
- 3 ), new Cheese( "brie",
- 15 ), new Cheese( "brie",
- 17 ), new Cheese( "provolone",
- 8 )};
+ 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" );
@@ -505,21 +691,21 @@
// ---------------- 1st scenario
wm.fireAllRules();
- // no fire, as per rule constraints
- Assert.assertEquals( 0,
+ Assert.assertEquals( 1,
results.size() );
+ Assert.assertEquals( 27,
+ ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 2nd scenario
final int index = 1;
- cheese[index].setPrice( 9 );
+ cheese[index].setPrice( 3 );
wm.update( cheeseHandles[index],
cheese[index] );
wm.fireAllRules();
- // 1 fire
- Assert.assertEquals( 1,
+ Assert.assertEquals( 2,
results.size() );
- Assert.assertEquals( 9,
+ Assert.assertEquals( 20,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 3rd scenario
@@ -528,26 +714,24 @@
bob );
wm.fireAllRules();
- // 2 fires
- Assert.assertEquals( 2,
+ Assert.assertEquals( 3,
results.size() );
- Assert.assertEquals( 17,
+ Assert.assertEquals( 15,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 4th scenario
wm.retract( cheeseHandles[3] );
- wm.retract( cheeseHandles[4] );
wm.fireAllRules();
// should not have fired as per constraint
- Assert.assertEquals( 2,
+ Assert.assertEquals( 3,
results.size() );
}
- public void testAccumulateMin() throws Exception {
+ public void execTestAccumulateCount( String fileName ) throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMin.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
final RuleBase ruleBase = loadRuleBase( reader );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -575,8 +759,10 @@
// ---------------- 1st scenario
wm.fireAllRules();
// no fire, as per rule constraints
- Assert.assertEquals( 0,
+ Assert.assertEquals( 1,
results.size() );
+ Assert.assertEquals( 3,
+ ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 2nd scenario
final int index = 1;
@@ -586,7 +772,7 @@
wm.fireAllRules();
// 1 fire
- Assert.assertEquals( 1,
+ Assert.assertEquals( 2,
results.size() );
Assert.assertEquals( 3,
((Number) results.get( results.size() - 1 )).intValue() );
@@ -598,25 +784,24 @@
wm.fireAllRules();
// 2 fires
+ Assert.assertEquals( 3,
+ results.size() );
Assert.assertEquals( 2,
- results.size() );
- Assert.assertEquals( 1,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 4th scenario
wm.retract( cheeseHandles[3] );
- wm.retract( cheeseHandles[4] );
wm.fireAllRules();
// should not have fired as per constraint
- Assert.assertEquals( 2,
+ Assert.assertEquals( 3,
results.size() );
}
- public void testAccumulateCount() throws Exception {
+ public void execTestAccumulateAverage(String fileName) throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateCount.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
final RuleBase ruleBase = loadRuleBase( reader );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -626,12 +811,12 @@
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 )};
+ 10 ), new Cheese( "stilton",
+ 2 ), new Cheese( "stilton",
+ 11 ), new Cheese( "brie",
+ 15 ), new Cheese( "brie",
+ 17 ), new Cheese( "provolone",
+ 8 )};
final Person bob = new Person( "Bob",
"stilton" );
@@ -644,22 +829,20 @@
// ---------------- 1st scenario
wm.fireAllRules();
// no fire, as per rule constraints
- Assert.assertEquals( 1,
+ Assert.assertEquals( 0,
results.size() );
- Assert.assertEquals( 3,
- ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 2nd scenario
final int index = 1;
- cheese[index].setPrice( 3 );
+ cheese[index].setPrice( 9 );
wm.update( cheeseHandles[index],
cheese[index] );
wm.fireAllRules();
// 1 fire
- Assert.assertEquals( 2,
+ Assert.assertEquals( 1,
results.size() );
- Assert.assertEquals( 3,
+ Assert.assertEquals( 10,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 3rd scenario
@@ -669,24 +852,25 @@
wm.fireAllRules();
// 2 fires
- Assert.assertEquals( 3,
+ Assert.assertEquals( 2,
results.size() );
- Assert.assertEquals( 2,
+ Assert.assertEquals( 16,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 4th scenario
wm.retract( cheeseHandles[3] );
+ wm.retract( cheeseHandles[4] );
wm.fireAllRules();
// should not have fired as per constraint
- Assert.assertEquals( 3,
+ Assert.assertEquals( 2,
results.size() );
}
- public void testAccumulateWithFromChaining() throws Exception {
+ public void execTestAccumulateMin( String fileName ) throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateWithFromChaining.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
final RuleBase ruleBase = loadRuleBase( reader );
final WorkingMemory wm = ruleBase.newStatefulSession();
@@ -702,38 +886,33 @@
4 ), new Cheese( "brie",
1 ), new Cheese( "provolone",
8 )};
+ final Person bob = new Person( "Bob",
+ "stilton" );
- Cheesery cheesery = new Cheesery();
-
+ final FactHandle[] cheeseHandles = new FactHandle[cheese.length];
for ( int i = 0; i < cheese.length; i++ ) {
- cheesery.addCheese( cheese[i] );
+ cheeseHandles[i] = wm.insert( 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,
+ // no fire, as per rule constraints
+ Assert.assertEquals( 0,
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 );
+ cheese[index].setPrice( 3 );
+ wm.update( cheeseHandles[index],
+ cheese[index] );
wm.fireAllRules();
- // no fire
+ // 1 fire
Assert.assertEquals( 1,
results.size() );
+ Assert.assertEquals( 3,
+ ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 3rd scenario
bob.setLikes( "brie" );
@@ -744,13 +923,12 @@
// 2 fires
Assert.assertEquals( 2,
results.size() );
- Assert.assertEquals( 3,
- ((List) results.get( results.size() - 1 )).size() );
+ Assert.assertEquals( 1,
+ ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 4th scenario
- cheesery.getCheeses().remove( cheese[3] );
- wm.update( cheeseryHandle,
- cheesery );
+ wm.retract( cheeseHandles[3] );
+ wm.retract( cheeseHandles[4] );
wm.fireAllRules();
// should not have fired as per constraint
@@ -759,164 +937,24 @@
}
- public void testMVELAccumulate2WM() throws Exception {
-
+ public void execTestAccumulateMax( String fileName ) throws Exception {
// read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateMVEL.drl" ) );
+ final Reader reader = new InputStreamReader( getClass().getResourceAsStream( fileName ) );
final RuleBase ruleBase = loadRuleBase( reader );
- final WorkingMemory wm1 = ruleBase.newStatefulSession();
- final List results1 = new ArrayList();
-
- wm1.setGlobal( "results",
- results1 );
-
- final WorkingMemory wm2 = ruleBase.newStatefulSession();
- final List results2 = new ArrayList();
-
- wm2.setGlobal( "results",
- results2 );
-
- wm1.insert( new Person( "Bob",
- "stilton",
- 20 ) );
- wm1.insert( new Person( "Mark",
- "provolone" ) );
-
- wm2.insert( new Person( "Bob",
- "stilton",
- 20 ) );
- wm2.insert( new Person( "Mark",
- "provolone" ) );
-
- wm1.insert( new Cheese( "stilton",
- 10 ) );
- wm1.insert( new Cheese( "brie",
- 5 ) );
- wm2.insert( new Cheese( "stilton",
- 10 ) );
- wm1.insert( new Cheese( "provolone",
- 150 ) );
- wm2.insert( new Cheese( "brie",
- 5 ) );
- wm2.insert( new Cheese( "provolone",
- 150 ) );
- wm1.fireAllRules();
-
- wm2.fireAllRules();
-
- Assert.assertEquals( new Integer( 165 ),
- results1.get( 0 ) );
- Assert.assertEquals( new Integer( 10 ),
- results1.get( 1 ) );
- Assert.assertEquals( new Integer( 150 ),
- results1.get( 2 ) );
- Assert.assertEquals( new Integer( 10 ),
- results1.get( 3 ) );
- Assert.assertEquals( new Integer( 210 ),
- results1.get( 4 ) );
-
- Assert.assertEquals( new Integer( 165 ),
- results2.get( 0 ) );
- Assert.assertEquals( new Integer( 10 ),
- results2.get( 1 ) );
- Assert.assertEquals( new Integer( 150 ),
- results2.get( 2 ) );
- Assert.assertEquals( new Integer( 10 ),
- results2.get( 3 ) );
- Assert.assertEquals( new Integer( 210 ),
- results2.get( 4 ) );
- }
-
- public void testAccumulateInnerClass() throws Exception {
-
- // read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateInnerClass.drl" ) );
- final RuleBase ruleBase = loadRuleBase( reader );
-
final WorkingMemory wm = ruleBase.newStatefulSession();
final List results = new ArrayList();
wm.setGlobal( "results",
results );
- wm.insert( new OuterClass.InnerClass( 10 ) );
- wm.insert( new OuterClass.InnerClass( 5 ) );
-
- wm.fireAllRules();
-
- Assert.assertEquals( new Integer( 15 ),
- results.get( 0 ) );
- }
-
- public void testAccumulateReturningNull() throws Exception {
-
- // read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNull.drl" ) );
- final RuleBase ruleBase = loadRuleBase( reader );
-
- final WorkingMemory wm = ruleBase.newStatefulSession();
- final List results = new ArrayList();
-
- wm.setGlobal( "results",
- results );
-
- try {
- wm.insert( new Cheese( "stilton", 10 ) );
-
- fail( "Should have raised an exception because accumulate is returning null");
- } catch( RuntimeDroolsException rde ) {
- // success, working fine
- } catch( Exception e ) {
- e.printStackTrace();
- fail( "Should have raised a DroolsRuntimeException instead of "+e);
- }
-
- }
-
- public void testAccumulateReturningNullMVEL() throws Exception {
-
- // read in the source
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateReturningNullMVEL.drl" ) );
- final RuleBase ruleBase = loadRuleBase( reader );
-
- final WorkingMemory wm = ruleBase.newStatefulSession();
- final List results = new ArrayList();
-
- wm.setGlobal( "results",
- results );
-
- try {
- wm.insert( new Cheese( "stilton", 10 ) );
-
- fail( "Should have raised an exception because accumulate is returning null");
- } catch( RuntimeDroolsException rde ) {
- // success, working fine
- } catch( Exception e ) {
- e.printStackTrace();
- fail( "Should have raised a DroolsRuntimeException instead of "+e);
- }
-
- }
-
- 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 )};
+ 4 ), new Cheese( "stilton",
+ 2 ), new Cheese( "stilton",
+ 3 ), new Cheese( "brie",
+ 15 ), new Cheese( "brie",
+ 17 ), new Cheese( "provolone",
+ 8 )};
final Person bob = new Person( "Bob",
"stilton" );
@@ -928,21 +966,21 @@
// ---------------- 1st scenario
wm.fireAllRules();
- Assert.assertEquals( 1,
+ // no fire, as per rule constraints
+ Assert.assertEquals( 0,
results.size() );
- Assert.assertEquals( 27,
- ((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 2nd scenario
final int index = 1;
- cheese[index].setPrice( 3 );
+ cheese[index].setPrice( 9 );
wm.update( cheeseHandles[index],
cheese[index] );
wm.fireAllRules();
- Assert.assertEquals( 2,
+ // 1 fire
+ Assert.assertEquals( 1,
results.size() );
- Assert.assertEquals( 20,
+ Assert.assertEquals( 9,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 3rd scenario
@@ -951,17 +989,19 @@
bob );
wm.fireAllRules();
- Assert.assertEquals( 3,
+ // 2 fires
+ Assert.assertEquals( 2,
results.size() );
- Assert.assertEquals( 15,
+ Assert.assertEquals( 17,
((Number) results.get( results.size() - 1 )).intValue() );
// ---------------- 4th scenario
wm.retract( cheeseHandles[3] );
+ wm.retract( cheeseHandles[4] );
wm.fireAllRules();
// should not have fired as per constraint
- Assert.assertEquals( 3,
+ Assert.assertEquals( 2,
results.size() );
}
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateAverageMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateAverageMVEL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateAverageMVEL.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -0,0 +1,17 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "External Function" salience 80
+ dialect "mvel"
+ when
+ $person : Person( $likes : likes )
+ $avg : Number( intValue >= 10 )
+ from accumulate( $cheese : Cheese( type == $likes, $price : price ),
+ average( $price ) );
+ then
+ results.add( $avg );
+end
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateAverageMVEL.drl
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateCountMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateCountMVEL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateCountMVEL.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -0,0 +1,17 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "External Function" salience 80
+ dialect "mvel"
+ when
+ $person : Person( $likes : likes )
+ $count : Number( intValue >= 2 )
+ from accumulate( $cheese : Cheese( type == $likes ),
+ count( $cheese ) );
+ then
+ results.add( $count );
+end
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateCountMVEL.drl
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMaxMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMaxMVEL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMaxMVEL.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -0,0 +1,17 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "External Function" salience 80
+ dialect "mvel"
+ when
+ $person : Person( $likes : likes )
+ $max : Number( intValue >= 5 )
+ from accumulate( $cheese : Cheese( type == $likes, $price : price ),
+ max( $price ) );
+ then
+ results.add( $max );
+end
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMaxMVEL.drl
___________________________________________________________________
Name: svn:executable
+ *
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMinMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMinMVEL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMinMVEL.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -0,0 +1,17 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "External Function" salience 80
+ dialect "mvel"
+ when
+ $person : Person( $likes : likes )
+ $min : Number( intValue <= 5 )
+ from accumulate( $cheese : Cheese( type == $likes, $price : price ),
+ min( $price ) );
+ then
+ results.add( $min );
+end
Property changes on: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateMinMVEL.drl
___________________________________________________________________
Name: svn:executable
+ *
Modified: 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 2007-08-26 18:27:19 UTC (rev 14604)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSum.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -6,7 +6,7 @@
global java.util.List results;
rule "Test sum" salience 80
- dialect "mvel"
+ dialect "java"
when
$person : Person( $likes : likes )
$sum : Number( doubleValue >= 10 )
Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSumMVEL.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSumMVEL.drl (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSumMVEL.drl 2007-08-26 18:35:49 UTC (rev 14605)
@@ -0,0 +1,17 @@
+package org.drools.test;
+
+import org.drools.Cheese;
+import org.drools.Person;
+
+global java.util.List results;
+
+rule "Test sum" salience 80
+ dialect "mvel"
+ 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_AccumulateSumMVEL.drl
___________________________________________________________________
Name: svn:executable
+ *
More information about the jboss-svn-commits
mailing list