Author: mar...@jb... Date: 2006-05-06 11:51:26 -0400 (Sat, 06 May 2006) New Revision: 4110 Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_XorGroups.drl Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java Log: JBRULES-259 Implement Xor Group -includes unit and integration tests JBRULES-258 Clear Agenda Group Modified: labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2006-05-06 15:51:12 UTC (rev 4109) +++ labs/jbossrules/trunk/drools-compiler/src/main/java/org/drools/semantics/java/RuleBuilder.java 2006-05-06 15:51:26 UTC (rev 4110) @@ -199,6 +199,8 @@ } } else if ( name.equals( "agenda-group" ) ) { rule.setAgendaGroup( attributeDescr.getValue() ); + } else if ( name.equals( "xor-group" ) ) { + rule.setXorGroup( attributeDescr.getValue() ); } else if ( name.equals( "duration" ) ) { rule.setDuration( Long.parseLong( attributeDescr.getValue() ) ); rule.setAgendaGroup( "" ); Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2006-05-06 15:51:12 UTC (rev 4109) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/compiler/PackageBuilderTest.java 2006-05-06 15:51:26 UTC (rev 4110) @@ -36,6 +36,7 @@ import org.drools.WorkingMemory; import org.drools.common.InternalFactHandle; import org.drools.common.LogicalDependency; +import org.drools.common.XorGroupNode; import org.drools.compiler.PackageBuilder; import org.drools.lang.descr.AndDescr; import org.drools.lang.descr.ColumnDescr; @@ -728,6 +729,16 @@ public void setActivated(boolean activated) { } + + public XorGroupNode getXorGroupNode() { + // TODO Auto-generated method stub + return null; + } + + public void setXorGroupNode(XorGroupNode xorGroupNode) { + // TODO Auto-generated method stub + + } } class MockTuple Modified: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-05-06 15:51:12 UTC (rev 4109) +++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/IntegrationCases.java 2006-05-06 15:51:26 UTC (rev 4110) @@ -57,6 +57,8 @@ import org.drools.lang.descr.PackageDescr; import org.drools.rule.Package; import org.drools.rule.Rule; +import org.drools.spi.AgendaGroup; +import org.drools.spi.XorGroup; /** * This contains the test cases for each engines implementation to execute. @@ -1105,6 +1107,49 @@ list.get( 7 ) ); } + public void testXorGroups() throws Exception { + PackageBuilder builder = new PackageBuilder(); + builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_XorGroups.drl" ) ) ); + Package pkg = builder.getPackage(); + + RuleBase ruleBase = getRuleBase(); + ruleBase.addPackage( pkg ); + WorkingMemory workingMemory = ruleBase.newWorkingMemory(); + + List list = new ArrayList(); + workingMemory.setGlobal( "list", + list ); + + Cheese brie = new Cheese( "brie", + 12 ); + workingMemory.assertObject( brie ); + + XorGroup xorGroup0 = workingMemory.getAgenda().getXorGroup( "xor-group-0" ); + assertEquals( 2, xorGroup0.size() ); + + XorGroup xorGroup3 = workingMemory.getAgenda().getXorGroup( "xor-group-3" ); + assertEquals( 1, xorGroup3.size() ); + + AgendaGroup agendaGroup3 = workingMemory.getAgenda().getAgendaGroup( "agenda-group-3" ); + assertEquals( 1, agendaGroup3.size() ); + + AgendaGroup agendaGroupMain = workingMemory.getAgenda().getAgendaGroup( "MAIN" ); + assertEquals( 3, agendaGroupMain.size() ); + + workingMemory.clearAgendaGroup( "agenda-group-3" ); + assertEquals( 0, xorGroup3.size() ); + assertEquals( 0, agendaGroup3.size() ); + + workingMemory.fireAllRules(); + + assertEquals( 0, xorGroup0.size() ); + + assertEquals( 2, list.size() ); + assertEquals( "rule0", list.get(0)); + assertEquals( "rule2", list.get(1)); + + } + public void testDuration() throws Exception { PackageBuilder builder = new PackageBuilder(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Duration.drl" ) ) ); Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_XorGroups.drl =================================================================== --- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_XorGroups.drl 2006-05-06 15:51:12 UTC (rev 4109) +++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/test_XorGroups.drl 2006-05-06 15:51:26 UTC (rev 4110) @@ -0,0 +1,38 @@ +package org.drools.test; + +import org.drools.Cheese; + +global java.util.List list; + +rule "rule0" + salience 10 + xor-group "xor-group-0" + when + Cheese( ) + then + list.add( "rule0" ); +end + +rule "rule1" + xor-group "xor-group-0" + when + Cheese( ) + then + list.add( "rule1" ); +end + +rule "rul2" + when + Cheese( ) + then + list.add( "rule2" ); +end + +rule "rule3" + agenda-group "agenda-group-3" + xor-group "xor-group-3" + when + Cheese( ) + then + list.add( "rule3" ); +end |