[jboss-svn-commits] JBL Code SVN: r10991 - 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 Apr 15 21:42:07 EDT 2007


Author: mark.proctor at jboss.com
Date: 2007-04-15 21:42:07 -0400 (Sun, 15 Apr 2007)
New Revision: 10991

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LogicalAssertionsAccumulatorPattern.drl
Modified:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
Log:
JBRULES-449 Logical dependency bug, justifier tuple contains retracted handles, logically depend object stays in working memory

Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java	2007-04-16 01:32:40 UTC (rev 10990)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/TruthMaintenanceTest.java	2007-04-16 01:42:07 UTC (rev 10991)
@@ -738,8 +738,45 @@
                       list.size() );
         assertEquals( 1,
                       workingMemory.getObjects().size() );
-
     }
     
+    public void testLogicalAssertionsAccumulatorPattern() throws Exception {
+        // JBRULES-449
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_LogicalAssertionsAccumulatorPattern.drl" ) ) );
+        final Package pkg = builder.getPackage();
 
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( pkg );
+        final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
+
+        workingMemory.setGlobal( "ga", "a");
+        workingMemory.setGlobal( "gb", "b");
+        workingMemory.setGlobal( "gs", new Short((short)3));
+        
+        workingMemory.fireAllRules();
+
+        List l;
+        final FactHandle h = workingMemory.assertObject( new Integer( 6 ) );
+        assertEquals( 1,
+                      workingMemory.getObjects().size() );
+
+        workingMemory.fireAllRules();
+        l = workingMemory.getObjects( CheeseEqual.class );
+        assertEquals( "There should be 2 CheeseEqual in Working Memory, 1 justified, 1 stated", 2, l.size() );
+        assertEquals( 6, workingMemory.getObjects().size() );
+
+        workingMemory.retractObject( h );
+        l = workingMemory.getObjects( CheeseEqual.class );
+        assertEquals( "There should be only 1 CheeseEqual in Working Memory, 1 stated (the justified should have been retracted). Check TruthMaintenanceSystem justifiedMap", 1, l.size() );
+        l = workingMemory.getObjects( Short.class );
+        assertEquals( 1, l.size() );
+        assertEquals( 2, workingMemory.getObjects().size() );
+        
+        //clean-up
+        workingMemory.fireAllRules();
+        assertEquals( 0, workingMemory.getObjects().size() );
+    }    
+    
+
 }

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LogicalAssertionsAccumulatorPattern.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LogicalAssertionsAccumulatorPattern.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_LogicalAssertionsAccumulatorPattern.drl	2007-04-16 01:42:07 UTC (rev 10991)
@@ -0,0 +1,63 @@
+package org.drools.test;
+
+import java.lang.Integer;
+import java.lang.Float;
+import java.lang.Double;
+import java.lang.Short;
+import java.lang.String;
+import org.drools.CheeseEqual;
+
+global java.lang.String ga;
+global java.lang.String gb;
+global java.lang.Short gs;
+
+rule "assert-item"
+	when
+		i : Integer()
+	then
+		assertLogical(new Double(2.0));
+end
+
+rule "kickstart-accumulation"
+	when
+		i : Integer()
+	then
+		assertLogical(new Float(1.0));
+end
+
+rule "item qualifies"
+    when
+    	d : Double()
+    	f : Float()
+    then
+    	//assert(new Short((short)3));
+    	assert(gs);
+   		assertLogical(new CheeseEqual(ga, 4));
+end
+
+rule "accumulate item"
+	when
+		f : Float()
+		s : Short()
+		c : CheeseEqual(type == (ga), price == 4)
+		not CheeseEqual(type == (gb), price == 5)
+	then
+		modify(f);
+		assert(new CheeseEqual(gb, 5));
+end
+
+rule "clean-up-1"
+	when
+		s : Short()
+		not Float()
+	then
+		retract(s);
+end
+
+rule "clean-up-2"
+	when
+		c : CheeseEqual(type == (gb), price == 5)
+		not Float()
+	then
+		retract(c);
+end
\ No newline at end of file




More information about the jboss-svn-commits mailing list