[jboss-svn-commits] JBL Code SVN: r26535 - 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
Thu May 14 09:09:11 EDT 2009


Author: tirelli
Date: 2009-05-14 09:09:11 -0400 (Thu, 14 May 2009)
New Revision: 26535

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSerialization.drl
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/MarshallingTest.java
Log:
JBRULES-1855: adding test case

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	2009-05-14 12:42:01 UTC (rev 26534)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/AccumulateTest.java	2009-05-14 13:09:11 UTC (rev 26535)
@@ -14,6 +14,8 @@
 import org.drools.Cheese;
 import org.drools.Cheesery;
 import org.drools.FactHandle;
+import org.drools.KnowledgeBase;
+import org.drools.KnowledgeBaseFactory;
 import org.drools.Order;
 import org.drools.OrderItem;
 import org.drools.OuterClass;
@@ -24,12 +26,17 @@
 import org.drools.RuntimeDroolsException;
 import org.drools.StatefulSession;
 import org.drools.WorkingMemory;
+import org.drools.builder.KnowledgeBuilder;
+import org.drools.builder.KnowledgeBuilderFactory;
+import org.drools.builder.ResourceType;
 import org.drools.compiler.DrlParser;
 import org.drools.compiler.DroolsParserException;
 import org.drools.compiler.PackageBuilder;
 import org.drools.compiler.PackageBuilderConfiguration;
+import org.drools.io.ResourceFactory;
 import org.drools.lang.descr.PackageDescr;
 import org.drools.rule.Package;
+import org.drools.runtime.StatefulKnowledgeSession;
 
 public class AccumulateTest extends TestCase {
     protected RuleBase getRuleBase() throws Exception {
@@ -935,8 +942,8 @@
     }
 
     private void updateReferences(final StatefulSession session,
-                                  final DataSet data ) {
-        data.results = (List<?>) session.getGlobal( "results" );
+                                  final DataSet data) {
+        data.results = (List< ? >) session.getGlobal( "results" );
         for ( Iterator< ? > it = session.iterateObjects(); it.hasNext(); ) {
             Object next = (Object) it.next();
             if ( next instanceof Cheese ) {
@@ -944,7 +951,7 @@
                 data.cheese[c.getOldPrice()] = c;
                 data.cheeseHandles[c.getOldPrice()] = session.getFactHandle( c );
                 assertNotNull( data.cheeseHandles[c.getOldPrice()] );
-            } else if( next instanceof Person ) {
+            } else if ( next instanceof Person ) {
                 Person p = (Person) next;
                 data.bob = p;
                 data.bobHandle = session.getFactHandle( data.bob );
@@ -1335,7 +1342,6 @@
         Assert.assertEquals( 3,
                              ((Set) results.get( results.size() - 1 )).size() );
 
-
         // ---------------- 4rd scenario
         wm.retract( cheeseHandles[4] );
         wm.fireAllRules();
@@ -1456,12 +1462,21 @@
         wm.setGlobal( "results",
                       results );
 
-        Order order = new Order(1, "Bob");
-        OrderItem item1 = new OrderItem( order, 1, "maquilage", 1, 10 );
-        OrderItem item2 = new OrderItem( order, 2, "perfume", 1, 5 );
+        Order order = new Order( 1,
+                                 "Bob" );
+        OrderItem item1 = new OrderItem( order,
+                                         1,
+                                         "maquilage",
+                                         1,
+                                         10 );
+        OrderItem item2 = new OrderItem( order,
+                                         2,
+                                         "perfume",
+                                         1,
+                                         5 );
         order.addItem( item1 );
         order.addItem( item2 );
-        
+
         wm.insert( order );
         wm.insert( item1 );
         wm.insert( item2 );
@@ -1471,7 +1486,7 @@
                       results.size() );
         assertEquals( 15,
                       results.get( 0 ).intValue() );
-        assertEquals( 15.0, 
+        assertEquals( 15.0,
                       order.getTotal() );
     }
 
@@ -1481,7 +1496,7 @@
         final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_AccumulateGlobals.drl" ) );
         final RuleBase ruleBase = loadRuleBase( reader );
 
-        final WorkingMemory wm = ruleBase.newStatefulSession();
+        final StatefulSession wm = ruleBase.newStatefulSession();
         final List results = new ArrayList();
 
         wm.setGlobal( "results",

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java	2009-05-14 12:42:01 UTC (rev 26534)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/MarshallingTest.java	2009-05-14 13:09:11 UTC (rev 26535)
@@ -2158,6 +2158,41 @@
                       session.getAgenda().getActivations().length );
     }
 
+    public void testAccumulateSessionSerialization() throws Exception {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newInputStreamResource( getClass().getResourceAsStream( "test_AccumulateSerialization.drl" ) ),
+                      ResourceType.DRL );
+
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+
+        StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession();
+        final List<Number> results = new ArrayList<Number>();
+
+        ksession.setGlobal( "results",
+                            results );
+
+        ksession.insert( new Cheese( "stilton",
+                                     10 ) );
+        ksession.insert( new Cheese( "brie",
+                                     5 ) );
+        ksession.insert( new Cheese( "provolone",
+                                     150 ) );
+        ksession.insert( new Cheese( "brie",
+                                     20 ) );
+        ksession.insert( new Person( "Bob",
+                                     "brie" ) );
+        
+        ksession = getSerialisedStatefulKnowledgeSession( ksession, true );
+
+        ksession.fireAllRules();
+
+        assertEquals( 1,
+                      results.size() );
+        assertEquals( 25,
+                      results.get( 0 ).intValue() );
+    }
+
     /**
      * test that creates a new knowledge base, new stateful session, inserts new
      * fact, serializes the knowledge base and session and fact using one output

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSerialization.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSerialization.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_AccumulateSerialization.drl	2009-05-14 13:09:11 UTC (rev 26535)
@@ -0,0 +1,14 @@
+package org.drools;
+
+global java.util.List results;
+
+rule "Test sum" salience 80
+    dialect "java"
+    when
+     $sum : Number( doubleValue >= 10 )
+     from accumulate( Person( $likes : likes ) and Cheese( type == $likes, $price : price ),
+                                                sum( $price ) );
+    then
+        results.add( $sum );
+end 
+




More information about the jboss-svn-commits mailing list