[jboss-svn-commits] JBL Code SVN: r33849 - 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
Mon Jul 12 18:36:20 EDT 2010


Author: tirelli
Date: 2010-07-12 18:36:19 -0400 (Mon, 12 Jul 2010)
New Revision: 33849

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
Log:
JBRULES-2206: adding test case for not and exists with dynamic rules

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2010-07-12 19:14:24 UTC (rev 33848)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/DynamicRulesTest.java	2010-07-12 22:36:19 UTC (rev 33849)
@@ -45,6 +45,7 @@
 import org.drools.core.util.DroolsStreamUtils;
 import org.drools.definition.KnowledgePackage;
 import org.drools.definitions.impl.KnowledgePackageImp;
+import org.drools.event.rule.ActivationCreatedEvent;
 import org.drools.event.rule.AgendaEventListener;
 import org.drools.io.ResourceFactory;
 import org.drools.marshalling.MarshallerFactory;
@@ -1160,14 +1161,15 @@
         assertFalse( kbuilder.getErrors().toString(),
                      kbuilder.hasErrors() );
         kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
-        
+
         // rule should be reactivated, since data is still in the session
         verify( alistener,
                 times( 2 ) ).activationCreated( any( org.drools.event.rule.ActivationCreatedEvent.class ) );
-        
+
     }
 
-    public void testSharedLIANodeRemoval() throws IOException, DroolsParserException {
+    public void testSharedLIANodeRemoval() throws IOException,
+                                          DroolsParserException {
         String str = "global java.util.List list;\n";
         str += "rule \"test\"\n";
         str += "when\n";
@@ -1175,33 +1177,81 @@
         str += "then\n";
         str += " list.add(\"fired\");\n";
         str += "end\n";
-        
+
         PackageBuilder pkgBuilder = new PackageBuilder();
-        pkgBuilder.addPackageFromDrl(new StringReader(str));
-        Assert.assertTrue("Should not have errors", pkgBuilder.getErrors().isEmpty());
+        pkgBuilder.addPackageFromDrl( new StringReader( str ) );
+        Assert.assertTrue( "Should not have errors",
+                           pkgBuilder.getErrors().isEmpty() );
 
         // Add once ...
-        ReteooRuleBase rb = new ReteooRuleBase("dummy");
-        rb.addPackage(pkgBuilder.getPackage());
+        ReteooRuleBase rb = new ReteooRuleBase( "dummy" );
+        rb.addPackage( pkgBuilder.getPackage() );
 
         // This one works
         List list = new ArrayList();
         StatefulSession session = rb.newStatefulSession();
-        session.setGlobal( "list", list );
-        session.fireAllRules();       
-        assertEquals(1, list.size() );
+        session.setGlobal( "list",
+                           list );
+        session.fireAllRules();
+        assertEquals( 1,
+                      list.size() );
 
-        
         list.clear();
         // ... remove ...
-        rb.removePackage(pkgBuilder.getPackage().getName());
-        rb.addPackage(pkgBuilder.getPackage());          
+        rb.removePackage( pkgBuilder.getPackage().getName() );
+        rb.addPackage( pkgBuilder.getPackage() );
         session = rb.newStatefulSession();
-        session.setGlobal( "list", list );
-        session.fireAllRules();   
-        assertEquals(1, list.size() );
+        session.setGlobal( "list",
+                           list );
+        session.fireAllRules();
+        assertEquals( 1,
+                      list.size() );
     }
-    
+
+    public void testJBRULES_2206() {
+        KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
+        ((RuleBaseConfiguration) config).setRuleBaseUpdateHandler( null );
+        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase( config );
+        StatefulKnowledgeSession session = kbase.newStatefulKnowledgeSession();
+        
+        AgendaEventListener ael = mock( AgendaEventListener.class );
+        session.addEventListener( ael );
+
+        for ( int i = 0; i < 5; i++ ) {
+            session.insert( new Cheese() );
+        }
+
+        addDrlToKBase( kbase, "test_JBRULES_2206_1.drl" );
+        
+        // two matching rules were added, so 2 activations should have been created 
+        verify( ael, times(2) ).activationCreated( any( ActivationCreatedEvent.class ) );
+        int fireCount = session.fireAllRules();
+        // both should have fired
+        assertEquals( 2, fireCount );
+        
+        addDrlToKBase( kbase, "test_JBRULES_2206_2.drl" );
+        
+        // one rule was overridden and should activate 
+        verify( ael, times(3) ).activationCreated( any( ActivationCreatedEvent.class ) );
+        fireCount = session.fireAllRules();
+        // that rule should fire again
+        assertEquals( 1, fireCount );
+
+        session.dispose();
+    }
+
+    private void addDrlToKBase(KnowledgeBase kbase, String drlName) {
+        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
+        kbuilder.add( ResourceFactory.newClassPathResource( drlName,
+                                                            DynamicRulesTest.class ),
+                      ResourceType.DRL );
+
+        if ( kbuilder.hasErrors() ) {
+            fail( kbuilder.getErrors().toString() );
+        }
+        kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() );
+    }
+
     public class SubvertedClassLoader extends URLClassLoader {
 
         private static final long serialVersionUID = 400L;

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_1.drl	2010-07-12 22:36:19 UTC (rev 33849)
@@ -0,0 +1,15 @@
+package org.drools;
+
+rule "notNotRule"
+    when        
+        exists ( Cheese() );        
+    then     
+        //System.out.println("Rule fired...");      
+end
+
+rule "existsRule"
+    when        
+        exists ( Cheese() );        
+    then     
+        //System.out.println("exists rule fired...");      
+end

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_JBRULES_2206_2.drl	2010-07-12 22:36:19 UTC (rev 33849)
@@ -0,0 +1,9 @@
+package org.drools;
+
+rule "notNotRule"
+    when        
+        not ( not ( Cheese() ) );        
+    then     
+        //System.out.println("Rule fired...");      
+end
+



More information about the jboss-svn-commits mailing list