[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