[jboss-svn-commits] JBL Code SVN: r7026 - labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Oct 23 13:46:19 EDT 2006
Author: mark.proctor at jboss.com
Date: 2006-10-23 13:46:17 -0400 (Mon, 23 Oct 2006)
New Revision: 7026
Removed:
labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
Log:
-removed leaps
Deleted: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java 2006-10-23 17:44:28 UTC (rev 7025)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/LeapsTest.java 2006-10-23 17:46:17 UTC (rev 7026)
@@ -1,445 +0,0 @@
-package org.drools.integrationtests;
-
-/*
- * Copyright 2005 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.drools.Cheese;
-import org.drools.Person;
-import org.drools.PersonInterface;
-import org.drools.QueryResults;
-import org.drools.RuleBase;
-import org.drools.RuleBaseFactory;
-import org.drools.WorkingMemory;
-import org.drools.compiler.DrlParser;
-import org.drools.compiler.PackageBuilder;
-import org.drools.lang.DrlDumper;
-import org.drools.lang.descr.PackageDescr;
-import org.drools.rule.Package;
-import org.drools.rule.Rule;
-import org.drools.xml.XmlDumper;
-
-/**
- * This runs the integration test cases with the leaps implementation.
- * In some cases features are not supported, or their behaviour is different in leaps. In that case
- * the test method is overridden - if this becomes common then we should refactor the common stuff out
- * into a CommonIntegrationCases suite.
- *
- */
-public class LeapsTest extends IntegrationCases {
-
- protected RuleBase getRuleBase() throws Exception {
- return RuleBaseFactory.newRuleBase( RuleBase.LEAPS );
- }
-
- /**
- * Leaps query requires fireAll run before any probing can be done. this
- * test mirrors one in IntegrationCases.java with addition of call to
- * workingMemory.fireAll to facilitate query execution
- */
- public void testQuery() throws Exception {
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "simple_query_test.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- final Cheese stilton = new Cheese( "stinky",
- 5 );
- workingMemory.assertObject( stilton );
- workingMemory.fireAllRules();// <=== the only difference from the base test case
- final QueryResults results = workingMemory.getQueryResults( "simple query" );
- assertEquals( 1,
- results.size() );
- }
-
-
- public void testTwoQuerries() throws Exception {
- // @see JBRULES-410 More than one Query definition causes an incorrect Rete network to be built.
-
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_TwoQuerries.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- final Cheese stilton = new Cheese( "stinky",
- 5 );
- workingMemory.assertObject( stilton );
- final Person per1 = new Person( "stinker", "smelly feet", 70);
- final Person per2 = new Person( "skunky", "smelly armpits", 40);
-
- workingMemory.assertObject( per1 );
- workingMemory.assertObject( per2 );
-
- workingMemory.fireAllRules( );
-
- QueryResults results = workingMemory.getQueryResults( "find stinky cheeses" );
- assertEquals( 1,
- results.size() );
-
- results = workingMemory.getQueryResults( "find pensioners" );
- assertEquals( 1,
- results.size() );
- }
-
-
-
- /**
- * leaps does not create activations upfront hence its inability to apply
- * auto-focus predicate in the same way as reteoo does. activations in
- * reteoo sense created in the order rules would fire based what used to be
- * called conflict resolution.
- *
- * So, while agenda groups feature works it mirrors reteoo behaviour up to
- * the point where auto-focus comes into play. At this point leaps and
- * reteoo are different at which point auto-focus should "fire".
- *
- * the other problem that relates to the lack of activations before rules
- * start firing is that agenda group is removed from focus stack when agenda
- * group is empty. This also affects module / focus behaviour
- */
- public void testAgendaGroups() throws Exception {
-
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_AgendaGroups.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
-
- final Cheese brie = new Cheese( "brie",
- 12 );
- workingMemory.assertObject( brie );
-
- workingMemory.fireAllRules();
-
- assertEquals( 3,
- list.size() );
-
- assertEquals( "MAIN",
- list.get( 0 ) ); // salience 10
- assertEquals( "group3",
- list.get( 1 ) ); // salience 5. set auto focus to
- // group 3
- // no group 3 activations at this point, pop it, next activation that
- // can fire is MAIN
- assertEquals( "MAIN",
- list.get( 2 ) );
- // assertEquals( "group2", list.get( 3 ) );
- // assertEquals( "group4", list.get( 4 ) );
- // assertEquals( "group1", list.get( 5 ) );
- // assertEquals( "group3", list.get( 6 ) );
- // assertEquals( "group1", list.get( 7 ) );
-
- workingMemory.setFocus( "group2" );
- workingMemory.fireAllRules();
-
- assertEquals( 4,
- list.size() );
- assertEquals( "group2",
- list.get( 3 ) );
- }
-
- // the problem here is that rete does conflict resolution after all
- // activations
- // are generated and takes rules salience as a first sorting criteria
- // and only then uses fact recency while leaps uses fact recency (and other
- // possible
- // criteria) first and rule based after
- public void testLogicalAssertions2() throws Exception {
- // Not working in leaps
- }
-
- // while Xor group behaviour is supported by leaps certain functionality is no
- // due to the lazy nature of leaps and the fact that it does not accumulate
- // activations before firing them we can not do counts on activation groups and
- // agenda groups as in base integration test
- public void testXorGroups() throws Exception {
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ActivationGroups.drl" ) ) );
- final Package pkg = builder.getPackage();
-
- final RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( pkg );
- final WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- final List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
-
- final Cheese brie = new Cheese( "brie",
- 12 );
- workingMemory.assertObject( brie );
-
- workingMemory.fireAllRules();
-
- assertEquals( 3,
- list.size() );
- assertTrue( "rule0",
- list.contains( "rule0" ) );
- assertTrue( "rule1",
- list.contains( "rule1" ) );
- assertTrue( "rule2",
- list.contains( "rule2" ) );
- }
-
- /**
- * this test is replicated here due to the fact that leaps
- * does not create activations before fireAll.
- *
- * so the only difference is in presence of fireAll () statement
- */
- public void testDynamicRuleRemovals() throws Exception {
-
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic1.drl" ) ) );
- builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_Dynamic2.drl" ) ) );
- builder.addPackageFromDrl( new InputStreamReader( getClass( ).getResourceAsStream( "test_Dynamic3.drl" ) ) );
- builder.addPackageFromDrl( new InputStreamReader( getClass( ).getResourceAsStream( "test_Dynamic4.drl" ) ) );
- final Package pkg = builder.getPackage( );
-
- org.drools.leaps.LeapsRuleBase leapsRuleBase = null;
- final RuleBase ruleBase = getRuleBase( );
- leapsRuleBase = (org.drools.leaps.LeapsRuleBase) ruleBase;
- ruleBase.addPackage( pkg );
-
- final WorkingMemory workingMemory = ruleBase.newWorkingMemory( );
-
- final List list = new ArrayList( );
- workingMemory.setGlobal( "list", list );
-
- final PersonInterface bob = new Person( "bob", "stilton" );
- bob.setStatus( "Not evaluated" );
- workingMemory.assertObject( bob );
-
- final Cheese stilton1 = new Cheese( "stilton", 5 );
- workingMemory.assertObject( stilton1 );
-
- final Cheese stilton2 = new Cheese( "stilton", 3 );
- workingMemory.assertObject( stilton2 );
-
- final Cheese stilton3 = new Cheese( "stilton", 1 );
- workingMemory.assertObject( stilton3 );
-
- final Cheese cheddar = new Cheese( "cheddar", 5 );
- workingMemory.assertObject( cheddar );
- //
- // workingMemory.get
- //
- workingMemory.fireAllRules( );
-
- assertEquals( 11, workingMemory.getAgenda( ).getActivations( ).length );
-
- leapsRuleBase.removeRule( "org.drools.test", "Who likes Stilton" );
- assertEquals( 8, workingMemory.getAgenda( ).getActivations( ).length );
-
- leapsRuleBase.removeRule( "org.drools.test", "like cheese" );
-
- final Cheese muzzarela = new Cheese( "muzzarela", 5 );
- workingMemory.assertObject( muzzarela );
-
- assertEquals( 4, workingMemory.getAgenda( ).getActivations( ).length );
-
- leapsRuleBase.removePackage( "org.drools.test" );
-
- assertEquals( 0, workingMemory.getAgenda( ).getActivations( ).length );
- }
-
- public void testSerializable() throws Exception {
-
- final Reader reader = new InputStreamReader( getClass().getResourceAsStream( "test_Serializable.drl" ) );
-
- final PackageBuilder builder = new PackageBuilder();
- builder.addPackageFromDrl( reader );
- final Package pkg = builder.getPackage();
-
- assertEquals( 0,
- builder.getErrors().length );
-
- RuleBase ruleBase = getRuleBase();//RuleBaseFactory.newRuleBase();
-
- ruleBase.addPackage( pkg );
-
- final byte[] ast = serializeOut( ruleBase );
- ruleBase = (RuleBase) serializeIn( ast );
- final Rule[] rules = ruleBase.getPackages()[0].getRules();
- assertEquals( 4,
- rules.length );
-
- assertEquals( "match Person 1",
- rules[0].getName() );
- assertEquals( "match Person 2",
- rules[1].getName() );
- assertEquals( "match Person 3",
- rules[2].getName() );
- assertEquals( "match Integer",
- rules[3].getName() );
-
- WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- workingMemory.setGlobal( "list", new ArrayList() );
-
- workingMemory.assertObject( new Integer(5) );
-
- final byte[] wm = serializeOut( workingMemory );
-
- workingMemory = ruleBase.newWorkingMemory( new ByteArrayInputStream( wm ) );
-
- assertEquals( 1, workingMemory.getObjects().size() );
- assertEquals( new Integer( 5 ) , workingMemory.getObjects().get(0) );
-
- workingMemory.fireAllRules();
-
- List list = ( List ) workingMemory.getGlobal( "list" );
-
- assertEquals( 1, list.size() );
- assertEquals( new Integer( 4 ), list.get( 0 ) );
-
- assertEquals( 2, workingMemory.getObjects().size() );
- assertEquals( new Integer( 5 ) , workingMemory.getObjects().get(0) );
- assertEquals( "help" , workingMemory.getObjects().get(1) );
- }
-
-
- public void testActivationGroups() throws Exception {
- // @todo for some reason this is b0rked?
- }
-
- /**
- * this test is replicated here due to the fact that leaps
- * does not create activations before fireAll.
- *
- * Lack of activations' pool makes "auto-focus" functionality unvailable.
- * While outcome of the rules is different it's still testing dumpers and
- * gets consitent outcome with it.
- */
- public void testDumpers() throws Exception {
- final DrlParser parser = new DrlParser();
- final PackageDescr pkg = parser.parse( new InputStreamReader( getClass().getResourceAsStream( "test_Dumpers.drl" ) ) );
-
- PackageBuilder builder = new PackageBuilder();
- builder.addPackage(pkg );
-
- RuleBase ruleBase = getRuleBase();
- ruleBase.addPackage( builder.getPackage() );
- WorkingMemory workingMemory = ruleBase.newWorkingMemory();
-
- List list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
-
- final Cheese brie = new Cheese( "brie",
- 12 );
- workingMemory.assertObject( brie );
-
- workingMemory.fireAllRules();
-
- assertEquals( 2,
- list.size() );
- assertEquals( "MAIN",
- list.get( 0 ) );
- assertEquals( "3 1",
- list.get( 1 ) );
-
- final DrlDumper drlDumper = new DrlDumper();
- final String drlResult = drlDumper.dump( pkg );
- builder = new PackageBuilder();
- builder.addPackageFromDrl( new StringReader( drlResult ) );
-
- ruleBase = getRuleBase();
- ruleBase.addPackage( builder.getPackage() );
- workingMemory = ruleBase.newWorkingMemory();
-
- list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
-
- workingMemory.assertObject( brie );
-
- workingMemory.fireAllRules();
-
- assertEquals( 2,
- list.size() );
- assertEquals( "MAIN",
- list.get( 0 ) );
- assertEquals( "3 1",
- list.get( 1 ) );
-
- final XmlDumper xmlDumper = new XmlDumper();
- final String xmlResult = xmlDumper.dump( pkg );
- builder = new PackageBuilder();
- builder.addPackageFromXml( new StringReader( xmlResult ) );
-
- ruleBase = getRuleBase();
- ruleBase.addPackage( builder.getPackage() );
- workingMemory = ruleBase.newWorkingMemory();
-
- list = new ArrayList();
- workingMemory.setGlobal( "list",
- list );
-
- workingMemory.assertObject( brie );
-
- workingMemory.fireAllRules();
-
- assertEquals( 2,
- list.size() );
- assertEquals( "MAIN",
- list.get( 0 ) );
- assertEquals( "3 1",
- list.get( 1 ) );
- }
-
- public void testBasicFrom() throws Exception {
-
- }
-
- public void testFromWithParams() throws Exception {
-
- }
-
- public void testAccumulate() throws Exception {
- // FIXME
- }
-
- public void testAccumulateModify() throws Exception {
- // FIXME
- }
-
- public void testCollect() throws Exception {
- // FIXME
- }
-
- public void testCollectModify() throws Exception {
- // FIXME
- }
-}
More information about the jboss-svn-commits
mailing list