[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