[jboss-svn-commits] JBL Code SVN: r19436 - in labs/jbossrules/trunk/drools-compiler/src/test: java/org/drools/integrationtests/manners and 2 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sun Apr 6 22:38:36 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-04-06 22:38:36 -0400 (Sun, 06 Apr 2008)
New Revision: 19436

Added:
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Chosen.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Context.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Count.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Guest.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Hobby.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/LastSeat.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/MannersBenchmark.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Path.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Seating.java
   labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Sex.java
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners.drl
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners128.dat
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners16.dat
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners32.dat
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners5.dat
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners64.dat
   labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners8.dat
Log:
JBRULES-1552 AlphaNode Compiler
-Added initially illustrative AlphaNodeCompiler
-Added Manners to compiler, might as well have it there as we use it enough.

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Chosen.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Chosen.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Chosen.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,55 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.Serializable;
+
+public class Chosen implements Serializable {
+
+	private int id;
+
+	private String guestName;
+
+	private Hobby hobby;
+	
+	public Chosen() {
+		
+	}
+
+	public Chosen(int id, String guestName, Hobby hobby) {
+		this.id = id;
+		this.guestName = guestName;
+		this.hobby = hobby;
+	}
+
+	public int getId() {
+		return this.id;
+	}
+
+	public String getGuestName() {
+		return this.guestName;
+	}
+
+	public Hobby getHobby() {
+		return this.hobby;
+	}
+
+	public String toString() {
+		return "{Chosen id=" + this.id + ", name=" + this.guestName
+				+ ", hobbies=" + this.hobby + "}";
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Context.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Context.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Context.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,74 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.Serializable;
+
+public class Context implements Serializable {
+
+	public static final int START_UP = 0;
+
+	public static final int ASSIGN_SEATS = 1;
+
+	public static final int MAKE_PATH = 2;
+
+	public static final int CHECK_DONE = 3;
+
+	public static final int PRINT_RESULTS = 4;
+
+	public static final String[] stateStrings = { "START_UP", "ASSIGN_SEATS",
+			"MAKE_PATH", "CHECK_DONE", "PRINT_RESULTS" };
+
+	private int state;
+	
+	public Context() {
+		
+	}
+
+	public Context(String state) {
+		if ("start".equals(state)) {
+			this.state = Context.START_UP;
+		} else {
+			throw new RuntimeException("Context '" + state
+					+ "' does not exist for Context Enum");
+		}
+	}
+
+	public Context(int state) {
+		this.state = state;
+	}
+
+	public void setState(int state) {
+		this.state = state;
+	}
+
+	public boolean isState(int state) {
+		return this.state == state;
+	}
+
+	public int getState() {
+		return this.state;
+	}
+
+	public String getStringValue() {
+		return stateStrings[this.state];
+	}
+
+	public String toString() {
+		return "[Context state=" + getStringValue() + "]";
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Count.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Count.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Count.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,59 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.
+ */
+
+public class Count {
+	private int value;
+	
+	public Count() {
+		
+	}
+
+	public Count(int value) {
+		super();
+		this.value = value;
+	}
+
+	public int getValue() {
+		return this.value;
+	}
+
+	public void setValue(int value) {
+		this.value = value;
+	}
+
+	public String toString() {
+		return "[Count value=" + this.value + "]";
+	}
+
+	public boolean equals(Object object) {
+		if (object == this) {
+			return true;
+		}
+
+		if ((object == null) || !(object instanceof Count)) {
+			return false;
+		}
+
+		return this.value == ((Count) object).value;
+	}
+
+	public int hashCode() {
+		return this.value;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Guest.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Guest.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Guest.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,54 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.Serializable;
+
+public class Guest implements Serializable {
+	private String name;
+
+	private Sex sex;
+
+	private Hobby hobby;
+	
+	public Guest() {
+		
+	}
+
+	public Guest(String name, Sex sex, Hobby hobby) {
+		this.name = name;
+		this.sex = sex;
+		this.hobby = hobby;
+	}
+
+	public String getName() {
+		return this.name;
+	}
+
+	public Hobby getHobby() {
+		return this.hobby;
+	}
+
+	public Sex getSex() {
+		return this.sex;
+	}
+
+	public String toString() {
+		return "[Guest name=" + this.name + ", sex=" + this.sex + ", hobbies="
+				+ this.hobby + "]";
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Hobby.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Hobby.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Hobby.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,89 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.
+ */
+
+public class Hobby {
+	public static final String stringH1 = "h1";
+
+	public static final String stringH2 = "h2";
+
+	public static final String stringH3 = "h3";
+
+	public static final String stringH4 = "h4";
+
+	public static final String stringH5 = "h5";
+
+	public static final String[] hobbyStrings = new String[] { stringH1,
+			stringH2, stringH3, stringH4, stringH5 };
+
+	public static final Hobby H1 = new Hobby(1);
+
+	public static final Hobby H2 = new Hobby(2);
+
+	public static final Hobby H3 = new Hobby(3);
+
+	public static final Hobby H4 = new Hobby(4);
+
+	public static final Hobby H5 = new Hobby(5);
+
+	private String hobbyStr;
+
+	private int hobbyIndex;
+
+	public Hobby() {
+		
+	}
+	
+	private Hobby(int hobby) {
+		this.hobbyIndex = hobby - 1;
+		this.hobbyStr = hobbyStrings[this.hobbyIndex];
+	}
+
+	public String getHobby() {
+		return this.hobbyStr;
+	}
+
+	public static Hobby resolve(String hobby) {
+		if (stringH1.equals(hobby)) {
+			return Hobby.H1;
+		} else if (stringH2.equals(hobby)) {
+			return Hobby.H2;
+		} else if (stringH3.equals(hobby)) {
+			return Hobby.H3;
+		} else if (stringH4.equals(hobby)) {
+			return Hobby.H4;
+		} else if (stringH5.equals(hobby)) {
+			return Hobby.H5;
+		} else {
+			throw new RuntimeException("Hobby '" + hobby
+					+ "' does not exist for Hobby Enum");
+		}
+	}
+
+	public String toString() {
+		return getHobby();
+	}
+
+	public boolean equals(Object object) {
+		return (this == object);
+	}
+
+	public int hashCode() {
+		return this.hobbyIndex;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/LastSeat.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/LastSeat.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/LastSeat.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,39 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.Serializable;
+
+public class LastSeat implements Serializable {
+	private int seat;
+	
+	public LastSeat() {
+		
+	}
+
+	public LastSeat(int seat) {
+		this.seat = seat;
+	}
+
+	public int getSeat() {
+		return this.seat;
+	}
+
+	public String toString() {
+		return "[LastSeat seat=" + this.seat + "]";
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/MannersBenchmark.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/MannersBenchmark.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/MannersBenchmark.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,186 @@
+package org.drools.integrationtests.manners;
+
+import java.io.BufferedReader;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Random;
+import java.util.StringTokenizer;
+
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.common.InternalRuleBase;
+import org.drools.compiler.PackageBuilder;
+import org.drools.reteoo.AlphaNetworkCompiler;
+import org.drools.reteoo.ObjectTypeNode;
+import org.drools.rule.Package;
+
+public class MannersBenchmark {
+    /** Number of guests at the dinner (default: 16). */
+    private int numGuests  = 16;
+
+    /** Number of seats at the table (default: 16). */
+    private int numSeats   = 16;
+
+    /** Minimum number of hobbies each guest should have (default: 2). */
+    private int minHobbies = 2;
+
+    /** Maximun number of hobbies each guest should have (default: 3). */
+    private int maxHobbies = 3;
+
+    public static void main(final String[] args) throws Exception {
+        PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( MannersBenchmark.class.getResourceAsStream( "manners.drl" ) ) );
+        Package pkg = builder.getPackage();
+
+        // add the package to a rulebase
+        final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
+        ruleBase.addPackage( pkg );
+        
+        AlphaNetworkCompiler compiler = new  AlphaNetworkCompiler();
+        
+        for(ObjectTypeNode node : ( (InternalRuleBase) ruleBase).getRete().getObjectTypeNodes() ){
+            compiler.compile( node );
+        }
+
+//        StatefulSession session = ruleBase.newStatefulSession();
+//
+//        String filename;
+//        if ( args.length != 0 ) {
+//            String arg = args[0];
+//            filename = arg;
+//        } else {
+//            filename = "manners128.dat";
+//        }
+//
+//        InputStream is = MannersBenchmark.class.getResourceAsStream( filename );
+//        List list = getInputObjects( is );
+//        for ( Iterator it = list.iterator(); it.hasNext(); ) {
+//            Object object = it.next();
+//            session.insert( object );
+//        }
+//
+//        session.insert( new Count( 1 ) );
+//
+//        long start = System.currentTimeMillis();
+//        session.fireAllRules();
+//        System.err.println( System.currentTimeMillis() - start );
+//        session.dispose();
+    }
+
+    /**
+     * Convert the facts from the <code>InputStream</code> to a list of
+     * objects.
+     */
+    protected static List getInputObjects(InputStream inputStream) throws IOException {
+        List list = new ArrayList();
+
+        BufferedReader br = new BufferedReader( new InputStreamReader( inputStream ) );
+
+        String line;
+        while ( (line = br.readLine()) != null ) {
+            if ( line.trim().length() == 0 || line.trim().startsWith( ";" ) ) {
+                continue;
+            }
+            StringTokenizer st = new StringTokenizer( line,
+                                                      "() " );
+            String type = st.nextToken();
+
+            if ( "guest".equals( type ) ) {
+                if ( !"name".equals( st.nextToken() ) ) {
+                    throw new IOException( "expected 'name' in: " + line );
+                }
+                String name = st.nextToken();
+                if ( !"sex".equals( st.nextToken() ) ) {
+                    throw new IOException( "expected 'sex' in: " + line );
+                }
+                String sex = st.nextToken();
+                if ( !"hobby".equals( st.nextToken() ) ) {
+                    throw new IOException( "expected 'hobby' in: " + line );
+                }
+                String hobby = st.nextToken();
+
+                Guest guest = new Guest( name,
+                                         Sex.resolve( sex ),
+                                         Hobby.resolve( hobby ) );
+
+                list.add( guest );
+            }
+
+            if ( "last_seat".equals( type ) ) {
+                if ( !"seat".equals( st.nextToken() ) ) {
+                    throw new IOException( "expected 'seat' in: " + line );
+                }
+                list.add( new LastSeat( new Integer( st.nextToken() ).intValue() ) );
+            }
+
+            if ( "context".equals( type ) ) {
+                if ( !"state".equals( st.nextToken() ) ) {
+                    throw new IOException( "expected 'state' in: " + line );
+                }
+                list.add( new Context( st.nextToken() ) );
+            }
+        }
+        inputStream.close();
+
+        return list;
+    }
+
+    private InputStream generateData() {
+        final String LINE_SEPARATOR = System.getProperty( "line.separator" );
+
+        StringWriter writer = new StringWriter();
+
+        int maxMale = numGuests / 2;
+        int maxFemale = numGuests / 2;
+
+        int maleCount = 0;
+        int femaleCount = 0;
+
+        // init hobbies
+        List hobbyList = new ArrayList();
+        for ( int i = 1; i <= maxHobbies; i++ ) {
+            hobbyList.add( "h" + i );
+        }
+
+        Random rnd = new Random();
+        for ( int i = 1; i <= numGuests; i++ ) {
+            char sex = rnd.nextBoolean() ? 'm' : 'f';
+            if ( sex == 'm' && maleCount == maxMale ) {
+                sex = 'f';
+            }
+            if ( sex == 'f' && femaleCount == maxFemale ) {
+                sex = 'm';
+            }
+            if ( sex == 'm' ) {
+                maleCount++;
+            }
+            if ( sex == 'f' ) {
+                femaleCount++;
+            }
+
+            List guestHobbies = new ArrayList( hobbyList );
+
+            int numHobbies = minHobbies + rnd.nextInt( maxHobbies - minHobbies + 1 );
+            for ( int j = 0; j < numHobbies; j++ ) {
+                int hobbyIndex = rnd.nextInt( guestHobbies.size() );
+                String hobby = (String) guestHobbies.get( hobbyIndex );
+                writer.write( "(guest (name n" + i + ") (sex " + sex + ") (hobby " + hobby + "))" + LINE_SEPARATOR );
+                guestHobbies.remove( hobbyIndex );
+            }
+        }
+        writer.write( "(last_seat (seat " + numSeats + "))" + LINE_SEPARATOR );
+
+        writer.write( LINE_SEPARATOR );
+        writer.write( "(context (state start))" + LINE_SEPARATOR );
+
+        return new ByteArrayInputStream( writer.getBuffer().toString().getBytes() );
+    }
+
+}

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Path.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Path.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Path.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,53 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.
+ */
+
+public class Path {
+	private int id;
+
+	private String guestName;
+
+	private int seat;
+
+	public Path() {
+		
+	}
+	
+	public Path(int id, int seat, String guestName) {
+		this.id = id;
+		this.seat = seat;
+		this.guestName = guestName;
+	}
+
+	public int getSeat() {
+		return this.seat;
+	}
+
+	public String getGuestName() {
+		return this.guestName;
+	}
+
+	public int getId() {
+		return this.id;
+	}
+
+	public String toString() {
+		return "[Path id=" + this.id + ", seat=" + this.seat + ", guest="
+				+ this.guestName + "]";
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Seating.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Seating.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Seating.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,86 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.Serializable;
+
+public class Seating implements Serializable {
+	private int id, pid;
+
+	private int leftSeat, rightSeat;
+
+	private String leftGuestName, rightGuestName;
+
+	private boolean pathDone;
+	
+	public Seating() {
+		
+	}
+
+	public Seating( int id,  int pid,  boolean pathDone,
+			 int leftSeat,  String leftGuestName,
+			 int rightSeat,  String rightGuestName) {
+		super();
+		this.id = id;
+		this.pid = pid;
+		this.pathDone = pathDone;
+		this.leftSeat = leftSeat;
+		this.leftGuestName = leftGuestName;
+		this.rightSeat = rightSeat;
+		this.rightGuestName = rightGuestName;
+	}
+
+	public  boolean isPathDone() {
+		return this.pathDone;
+	}
+
+	public  void setPathDone(boolean pathDone) {
+		this.pathDone = pathDone;
+	}
+
+	public  int getId() {
+		return this.id;
+	}
+
+	public  String getLeftGuestName() {
+		return this.leftGuestName;
+	}
+
+	public  int getLeftSeat() {
+		return this.leftSeat;
+	}
+
+	public  int getPid() {
+		return this.pid;
+	}
+
+	public  String getRightGuestName() {
+		return this.rightGuestName;
+	}
+
+	public  int getRightSeat() {
+		return this.rightSeat;
+	}
+
+	public  String toString() {
+		return "[Seating id=" + this.id + " , pid=" + this.pid + " , pathDone="
+				+ this.pathDone + " , leftSeat=" + this.leftSeat
+				+ ", leftGuestName=" + this.leftGuestName + ", rightSeat="
+				+ this.rightSeat + ", rightGuestName=" + this.rightGuestName
+				+ "]";
+	}
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Sex.java
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Sex.java	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/java/org/drools/integrationtests/manners/Sex.java	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,67 @@
+package org.drools.integrationtests.manners;
+
+/*
+ * 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.
+ */
+
+public class Sex {
+	public static final Sex M = new Sex(0);
+
+	public static final Sex F = new Sex(1);
+
+	public static final String stringM = "m";
+
+	public static final String stringF = "f";
+
+	public static final String[] sexList = new String[] { stringM, stringF };
+
+	private int sex;
+
+	public Sex() {
+		
+	}
+	
+	private Sex(int sex) {
+		this.sex = sex;
+	}
+
+	public  String getSex() {
+		return sexList[this.sex];
+	}
+
+	public  static Sex resolve(String sex) {
+		if (stringM.equals(sex)) {
+			return Sex.M;
+		} else if (stringF.equals(sex)) {
+			return Sex.F;
+		} else {
+			throw new RuntimeException("Sex '" + sex
+					+ "' does not exist for Sex Enum");
+		}
+	}
+
+	public  String toString() {
+		return getSex();
+	}
+
+	public  boolean equals(Object object) {
+		return this == object;
+	}
+
+	public  int hashCode() {
+		return this.sex;
+	}
+
+}
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners.drl
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners.drl	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners.drl	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,112 @@
+package org.drools.integrationtests.manners
+
+rule assignFirstSeat
+    when
+        context : Context( state == Context.START_UP )
+        guest : Guest()
+        count : Count()
+    then
+        String guestName = guest.getName();
+        
+        Seating seating =  new Seating( count.getValue(), 1, true, 1, guestName, 1, guestName);
+        insert( seating );
+        
+        Path path = new Path( count.getValue(), 1, guestName );
+        insert( path );
+        
+        count.setValue(  count.getValue() + 1 );        
+        update( count );
+
+		System.out.println( "assign first seat :  " + seating + " : " + path );
+
+        context.setState( Context.ASSIGN_SEATS );        
+        update( context );
+end
+
+rule findSeating
+   when 
+       context : Context( state == Context.ASSIGN_SEATS )
+       $s      : Seating( pathDone == true )
+       $g1     : Guest( name == $s.rightGuestName )
+       $g2     : Guest( sex != $g1.sex, hobby == $g1.hobby )
+
+       count   : Count()
+
+       not ( Path( id == $s.id, guestName == $g2.name) )
+       not ( Chosen( id == $s.id, guestName == $g2.name, hobby == $g1.hobby) )
+   then
+       int rightSeat = $s.getRightSeat();
+       int seatId = $s.getId();
+       int countValue = count.getValue();
+       
+       Seating seating = new Seating( countValue, seatId, false, rightSeat, $s.getRightGuestName(), rightSeat + 1, $g2.getName() );
+       insert( seating );     
+                            
+       Path path = new Path( countValue, rightSeat + 1, $g2.getName()  );
+       insert( path );
+       
+       Chosen chosen = new Chosen( seatId, $g2.getName(), $g1.getHobby() );
+       insert( chosen  );
+
+	   System.err.println( "find seating : " + seating + " : " + path + " : " + chosen);
+
+       count.setValue(  countValue + 1 );
+       update( count );       
+
+       context.setState( Context.MAKE_PATH );
+       update( context );
+end
+
+rule makePath
+    when 
+        Context( state == Context.MAKE_PATH )
+        Seating( seatingId:id, seatingPid:pid, pathDone == false )
+        Path( id == seatingPid, pathGuestName:guestName, pathSeat:seat )
+        not Path( id == seatingId, guestName == pathGuestName )
+    then
+        insert( new Path( seatingId, pathSeat, pathGuestName ) );
+end 
+
+rule pathDone
+    when
+        context : Context( state == Context.MAKE_PATH ) 
+        seating : Seating( pathDone == false ) 
+    then
+        seating.setPathDone( true ); 
+        update( seating );
+        
+        context.setState( Context.CHECK_DONE ); 
+		update( context );
+end
+
+
+rule areWeDone
+    when
+        context : Context( state == Context.CHECK_DONE ) 
+        LastSeat( lastSeat: seat )
+        Seating( rightSeat == lastSeat ) 
+    then
+        context.setState(Context.PRINT_RESULTS ); 
+        update( context );
+end
+
+rule continue
+    when
+        context : Context( state == Context.CHECK_DONE ) 
+    then
+        context.setState( Context.ASSIGN_SEATS ); 
+        update( context );
+end
+
+
+rule allDone
+    when
+        context : Context( state == Context.PRINT_RESULTS ) 
+    then
+    	System.out.println( "All Done" );
+end
+
+//query getResults
+//	context : Context( state == Context.PRINT_RESULTS ) 
+//end 
+ 
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners128.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners128.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners128.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,440 @@
+(guest (name 1) (sex m) (hobby h2) )
+(guest (name 1) (sex m) (hobby h3) )
+(guest (name 1) (sex m) (hobby h1) )
+(guest (name 1) (sex m) (hobby h4) )
+(guest (name 1) (sex m) (hobby h5) )
+(guest (name 2) (sex f) (hobby h3) )
+(guest (name 2) (sex f) (hobby h2) )
+(guest (name 2) (sex f) (hobby h1) )
+(guest (name 2) (sex f) (hobby h4) )
+(guest (name 2) (sex f) (hobby h5) )
+(guest (name 3) (sex f) (hobby h5) )
+(guest (name 3) (sex f) (hobby h4) )
+(guest (name 3) (sex f) (hobby h2) )
+(guest (name 4) (sex m) (hobby h3) )
+(guest (name 4) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h1) )
+(guest (name 4) (sex m) (hobby h4) )
+(guest (name 5) (sex m) (hobby h2) )
+(guest (name 5) (sex m) (hobby h5) )
+(guest (name 5) (sex m) (hobby h3) )
+(guest (name 6) (sex f) (hobby h1) )
+(guest (name 6) (sex f) (hobby h4) )
+(guest (name 6) (sex f) (hobby h2) )
+(guest (name 6) (sex f) (hobby h5) )
+(guest (name 6) (sex f) (hobby h3) )
+(guest (name 7) (sex f) (hobby h1) )
+(guest (name 7) (sex f) (hobby h2) )
+(guest (name 7) (sex f) (hobby h3) )
+(guest (name 7) (sex f) (hobby h5) )
+(guest (name 8) (sex m) (hobby h3) )
+(guest (name 8) (sex m) (hobby h5) )
+(guest (name 9) (sex m) (hobby h3) )
+(guest (name 9) (sex m) (hobby h5) )
+(guest (name 9) (sex m) (hobby h2) )
+(guest (name 9) (sex m) (hobby h4) )
+(guest (name 10) (sex m) (hobby h2) )
+(guest (name 10) (sex m) (hobby h3) )
+(guest (name 10) (sex m) (hobby h4) )
+(guest (name 10) (sex m) (hobby h5) )
+(guest (name 10) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h2) )
+(guest (name 11) (sex m) (hobby h4) )
+(guest (name 11) (sex m) (hobby h5) )
+(guest (name 11) (sex m) (hobby h1) )
+(guest (name 12) (sex f) (hobby h3) )
+(guest (name 12) (sex f) (hobby h5) )
+(guest (name 12) (sex f) (hobby h2) )
+(guest (name 13) (sex f) (hobby h5) )
+(guest (name 13) (sex f) (hobby h1) )
+(guest (name 14) (sex m) (hobby h3) )
+(guest (name 14) (sex m) (hobby h5) )
+(guest (name 14) (sex m) (hobby h1) )
+(guest (name 14) (sex m) (hobby h4) )
+(guest (name 15) (sex m) (hobby h5) )
+(guest (name 15) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h1) )
+(guest (name 15) (sex m) (hobby h3) )
+(guest (name 15) (sex m) (hobby h4) )
+(guest (name 16) (sex m) (hobby h2) )
+(guest (name 16) (sex m) (hobby h5) )
+(guest (name 16) (sex m) (hobby h4) )
+(guest (name 17) (sex m) (hobby h4) )
+(guest (name 17) (sex m) (hobby h3) )
+(guest (name 18) (sex f) (hobby h2) )
+(guest (name 18) (sex f) (hobby h4) )
+(guest (name 18) (sex f) (hobby h5) )
+(guest (name 18) (sex f) (hobby h1) )
+(guest (name 19) (sex m) (hobby h5) )
+(guest (name 19) (sex m) (hobby h2) )
+(guest (name 20) (sex m) (hobby h2) )
+(guest (name 20) (sex m) (hobby h3) )
+(guest (name 21) (sex m) (hobby h4) )
+(guest (name 21) (sex m) (hobby h3) )
+(guest (name 21) (sex m) (hobby h2) )
+(guest (name 21) (sex m) (hobby h1) )
+(guest (name 22) (sex m) (hobby h1) )
+(guest (name 22) (sex m) (hobby h2) )
+(guest (name 22) (sex m) (hobby h4) )
+(guest (name 23) (sex f) (hobby h4) )
+(guest (name 23) (sex f) (hobby h5) )
+(guest (name 23) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h4) )
+(guest (name 24) (sex f) (hobby h3) )
+(guest (name 24) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h1) )
+(guest (name 24) (sex f) (hobby h5) )
+(guest (name 25) (sex m) (hobby h4) )
+(guest (name 25) (sex m) (hobby h5) )
+(guest (name 26) (sex m) (hobby h1) )
+(guest (name 26) (sex m) (hobby h2) )
+(guest (name 27) (sex m) (hobby h3) )
+(guest (name 27) (sex m) (hobby h5) )
+(guest (name 27) (sex m) (hobby h2) )
+(guest (name 28) (sex f) (hobby h4) )
+(guest (name 28) (sex f) (hobby h1) )
+(guest (name 28) (sex f) (hobby h3) )
+(guest (name 28) (sex f) (hobby h2) )
+(guest (name 28) (sex f) (hobby h5) )
+(guest (name 29) (sex f) (hobby h3) )
+(guest (name 29) (sex f) (hobby h5) )
+(guest (name 30) (sex m) (hobby h2) )
+(guest (name 30) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h3) )
+(guest (name 31) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h4) )
+(guest (name 32) (sex f) (hobby h2) )
+(guest (name 32) (sex f) (hobby h1) )
+(guest (name 32) (sex f) (hobby h5) )
+(guest (name 33) (sex f) (hobby h5) )
+(guest (name 33) (sex f) (hobby h4) )
+(guest (name 34) (sex m) (hobby h4) )
+(guest (name 34) (sex m) (hobby h5) )
+(guest (name 34) (sex m) (hobby h2) )
+(guest (name 35) (sex f) (hobby h3) )
+(guest (name 35) (sex f) (hobby h1) )
+(guest (name 35) (sex f) (hobby h4) )
+(guest (name 35) (sex f) (hobby h5) )
+(guest (name 35) (sex f) (hobby h2) )
+(guest (name 36) (sex m) (hobby h1) )
+(guest (name 36) (sex m) (hobby h4) )
+(guest (name 36) (sex m) (hobby h2) )
+(guest (name 36) (sex m) (hobby h3) )
+(guest (name 37) (sex f) (hobby h4) )
+(guest (name 37) (sex f) (hobby h2) )
+(guest (name 37) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h3) )
+(guest (name 38) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h2) )
+(guest (name 38) (sex f) (hobby h4) )
+(guest (name 39) (sex m) (hobby h5) )
+(guest (name 39) (sex m) (hobby h2) )
+(guest (name 40) (sex m) (hobby h2) )
+(guest (name 40) (sex m) (hobby h3) )
+(guest (name 41) (sex f) (hobby h5) )
+(guest (name 41) (sex f) (hobby h3) )
+(guest (name 42) (sex m) (hobby h5) )
+(guest (name 42) (sex m) (hobby h4) )
+(guest (name 43) (sex m) (hobby h3) )
+(guest (name 43) (sex m) (hobby h4) )
+(guest (name 43) (sex m) (hobby h5) )
+(guest (name 44) (sex f) (hobby h2) )
+(guest (name 44) (sex f) (hobby h4) )
+(guest (name 44) (sex f) (hobby h3) )
+(guest (name 44) (sex f) (hobby h1) )
+(guest (name 45) (sex m) (hobby h2) )
+(guest (name 45) (sex m) (hobby h4) )
+(guest (name 46) (sex m) (hobby h4) )
+(guest (name 46) (sex m) (hobby h1) )
+(guest (name 46) (sex m) (hobby h5) )
+(guest (name 47) (sex m) (hobby h2) )
+(guest (name 47) (sex m) (hobby h5) )
+(guest (name 47) (sex m) (hobby h4) )
+(guest (name 48) (sex f) (hobby h3) )
+(guest (name 48) (sex f) (hobby h1) )
+(guest (name 49) (sex m) (hobby h1) )
+(guest (name 49) (sex m) (hobby h5) )
+(guest (name 49) (sex m) (hobby h4) )
+(guest (name 49) (sex m) (hobby h3) )
+(guest (name 49) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h4) )
+(guest (name 50) (sex m) (hobby h3) )
+(guest (name 51) (sex m) (hobby h1) )
+(guest (name 51) (sex m) (hobby h2) )
+(guest (name 51) (sex m) (hobby h5) )
+(guest (name 51) (sex m) (hobby h4) )
+(guest (name 52) (sex f) (hobby h5) )
+(guest (name 52) (sex f) (hobby h3) )
+(guest (name 52) (sex f) (hobby h1) )
+(guest (name 52) (sex f) (hobby h4) )
+(guest (name 53) (sex f) (hobby h5) )
+(guest (name 53) (sex f) (hobby h1) )
+(guest (name 53) (sex f) (hobby h4) )
+(guest (name 53) (sex f) (hobby h2) )
+(guest (name 53) (sex f) (hobby h3) )
+(guest (name 54) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h3) )
+(guest (name 55) (sex m) (hobby h2) )
+(guest (name 55) (sex m) (hobby h4) )
+(guest (name 56) (sex m) (hobby h2) )
+(guest (name 56) (sex m) (hobby h3) )
+(guest (name 57) (sex f) (hobby h2) )
+(guest (name 57) (sex f) (hobby h1) )
+(guest (name 57) (sex f) (hobby h4) )
+(guest (name 58) (sex m) (hobby h5) )
+(guest (name 58) (sex m) (hobby h3) )
+(guest (name 58) (sex m) (hobby h2) )
+(guest (name 58) (sex m) (hobby h1) )
+(guest (name 58) (sex m) (hobby h4) )
+(guest (name 59) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h3) )
+(guest (name 59) (sex f) (hobby h5) )
+(guest (name 60) (sex f) (hobby h4) )
+(guest (name 60) (sex f) (hobby h2) )
+(guest (name 60) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h5) )
+(guest (name 61) (sex m) (hobby h1) )
+(guest (name 61) (sex m) (hobby h2) )
+(guest (name 61) (sex m) (hobby h4) )
+(guest (name 61) (sex m) (hobby h3) )
+(guest (name 62) (sex f) (hobby h3) )
+(guest (name 62) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h5) )
+(guest (name 62) (sex f) (hobby h4) )
+(guest (name 62) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h2) )
+(guest (name 63) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h4) )
+(guest (name 63) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h5) )
+(guest (name 64) (sex f) (hobby h2) )
+(guest (name 64) (sex f) (hobby h4) )
+(guest (name 64) (sex f) (hobby h1) )
+(guest (name 64) (sex f) (hobby h5) )
+(guest (name 64) (sex f) (hobby h3) )
+(guest (name 65) (sex m) (hobby h5) )
+(guest (name 65) (sex m) (hobby h3) )
+(guest (name 65) (sex m) (hobby h2) )
+(guest (name 65) (sex m) (hobby h1) )
+(guest (name 65) (sex m) (hobby h4) )
+(guest (name 66) (sex f) (hobby h5) )
+(guest (name 66) (sex f) (hobby h3) )
+(guest (name 66) (sex f) (hobby h4) )
+(guest (name 67) (sex f) (hobby h1) )
+(guest (name 67) (sex f) (hobby h4) )
+(guest (name 68) (sex m) (hobby h4) )
+(guest (name 68) (sex m) (hobby h2) )
+(guest (name 68) (sex m) (hobby h1) )
+(guest (name 68) (sex m) (hobby h5) )
+(guest (name 69) (sex m) (hobby h3) )
+(guest (name 69) (sex m) (hobby h4) )
+(guest (name 69) (sex m) (hobby h1) )
+(guest (name 70) (sex f) (hobby h3) )
+(guest (name 70) (sex f) (hobby h5) )
+(guest (name 70) (sex f) (hobby h1) )
+(guest (name 70) (sex f) (hobby h4) )
+(guest (name 70) (sex f) (hobby h2) )
+(guest (name 71) (sex m) (hobby h3) )
+(guest (name 71) (sex m) (hobby h1) )
+(guest (name 71) (sex m) (hobby h4) )
+(guest (name 72) (sex m) (hobby h4) )
+(guest (name 72) (sex m) (hobby h3) )
+(guest (name 72) (sex m) (hobby h1) )
+(guest (name 73) (sex f) (hobby h4) )
+(guest (name 73) (sex f) (hobby h1) )
+(guest (name 73) (sex f) (hobby h3) )
+(guest (name 74) (sex f) (hobby h1) )
+(guest (name 74) (sex f) (hobby h4) )
+(guest (name 74) (sex f) (hobby h2) )
+(guest (name 74) (sex f) (hobby h5) )
+(guest (name 74) (sex f) (hobby h3) )
+(guest (name 75) (sex f) (hobby h4) )
+(guest (name 75) (sex f) (hobby h2) )
+(guest (name 76) (sex f) (hobby h5) )
+(guest (name 76) (sex f) (hobby h4) )
+(guest (name 76) (sex f) (hobby h3) )
+(guest (name 76) (sex f) (hobby h2) )
+(guest (name 76) (sex f) (hobby h1) )
+(guest (name 77) (sex m) (hobby h1) )
+(guest (name 77) (sex m) (hobby h5) )
+(guest (name 78) (sex m) (hobby h5) )
+(guest (name 78) (sex m) (hobby h1) )
+(guest (name 79) (sex f) (hobby h1) )
+(guest (name 79) (sex f) (hobby h3) )
+(guest (name 79) (sex f) (hobby h4) )
+(guest (name 79) (sex f) (hobby h2) )
+(guest (name 79) (sex f) (hobby h5) )
+(guest (name 80) (sex m) (hobby h5) )
+(guest (name 80) (sex m) (hobby h1) )
+(guest (name 80) (sex m) (hobby h2) )
+(guest (name 80) (sex m) (hobby h4) )
+(guest (name 81) (sex m) (hobby h4) )
+(guest (name 81) (sex m) (hobby h1) )
+(guest (name 82) (sex m) (hobby h3) )
+(guest (name 82) (sex m) (hobby h4) )
+(guest (name 82) (sex m) (hobby h1) )
+(guest (name 82) (sex m) (hobby h2) )
+(guest (name 82) (sex m) (hobby h5) )
+(guest (name 83) (sex f) (hobby h1) )
+(guest (name 83) (sex f) (hobby h3) )
+(guest (name 83) (sex f) (hobby h4) )
+(guest (name 84) (sex m) (hobby h3) )
+(guest (name 84) (sex m) (hobby h4) )
+(guest (name 85) (sex f) (hobby h4) )
+(guest (name 85) (sex f) (hobby h1) )
+(guest (name 86) (sex m) (hobby h3) )
+(guest (name 86) (sex m) (hobby h4) )
+(guest (name 87) (sex m) (hobby h5) )
+(guest (name 87) (sex m) (hobby h4) )
+(guest (name 87) (sex m) (hobby h2) )
+(guest (name 87) (sex m) (hobby h3) )
+(guest (name 88) (sex m) (hobby h2) )
+(guest (name 88) (sex m) (hobby h5) )
+(guest (name 88) (sex m) (hobby h3) )
+(guest (name 88) (sex m) (hobby h1) )
+(guest (name 88) (sex m) (hobby h4) )
+(guest (name 89) (sex f) (hobby h5) )
+(guest (name 89) (sex f) (hobby h2) )
+(guest (name 89) (sex f) (hobby h4) )
+(guest (name 89) (sex f) (hobby h1) )
+(guest (name 90) (sex m) (hobby h2) )
+(guest (name 90) (sex m) (hobby h4) )
+(guest (name 90) (sex m) (hobby h5) )
+(guest (name 91) (sex f) (hobby h2) )
+(guest (name 91) (sex f) (hobby h3) )
+(guest (name 91) (sex f) (hobby h5) )
+(guest (name 91) (sex f) (hobby h1) )
+(guest (name 91) (sex f) (hobby h4) )
+(guest (name 92) (sex f) (hobby h3) )
+(guest (name 92) (sex f) (hobby h1) )
+(guest (name 92) (sex f) (hobby h2) )
+(guest (name 92) (sex f) (hobby h5) )
+(guest (name 93) (sex f) (hobby h3) )
+(guest (name 93) (sex f) (hobby h1) )
+(guest (name 93) (sex f) (hobby h2) )
+(guest (name 94) (sex f) (hobby h2) )
+(guest (name 94) (sex f) (hobby h5) )
+(guest (name 95) (sex f) (hobby h3) )
+(guest (name 95) (sex f) (hobby h4) )
+(guest (name 96) (sex m) (hobby h1) )
+(guest (name 96) (sex m) (hobby h4) )
+(guest (name 96) (sex m) (hobby h2) )
+(guest (name 96) (sex m) (hobby h5) )
+(guest (name 96) (sex m) (hobby h3) )
+(guest (name 97) (sex f) (hobby h4) )
+(guest (name 97) (sex f) (hobby h2) )
+(guest (name 97) (sex f) (hobby h5) )
+(guest (name 98) (sex m) (hobby h5) )
+(guest (name 98) (sex m) (hobby h4) )
+(guest (name 99) (sex f) (hobby h2) )
+(guest (name 99) (sex f) (hobby h5) )
+(guest (name 100) (sex m) (hobby h2) )
+(guest (name 100) (sex m) (hobby h3) )
+(guest (name 100) (sex m) (hobby h5) )
+(guest (name 100) (sex m) (hobby h4) )
+(guest (name 101) (sex f) (hobby h2) )
+(guest (name 101) (sex f) (hobby h1) )
+(guest (name 101) (sex f) (hobby h5) )
+(guest (name 101) (sex f) (hobby h3) )
+(guest (name 101) (sex f) (hobby h4) )
+(guest (name 102) (sex f) (hobby h2) )
+(guest (name 102) (sex f) (hobby h1) )
+(guest (name 102) (sex f) (hobby h5) )
+(guest (name 102) (sex f) (hobby h3) )
+(guest (name 102) (sex f) (hobby h4) )
+(guest (name 103) (sex m) (hobby h2) )
+(guest (name 103) (sex m) (hobby h1) )
+(guest (name 103) (sex m) (hobby h4) )
+(guest (name 103) (sex m) (hobby h3) )
+(guest (name 103) (sex m) (hobby h5) )
+(guest (name 104) (sex m) (hobby h5) )
+(guest (name 104) (sex m) (hobby h3) )
+(guest (name 104) (sex m) (hobby h4) )
+(guest (name 104) (sex m) (hobby h1) )
+(guest (name 104) (sex m) (hobby h2) )
+(guest (name 105) (sex f) (hobby h4) )
+(guest (name 105) (sex f) (hobby h2) )
+(guest (name 106) (sex f) (hobby h4) )
+(guest (name 106) (sex f) (hobby h5) )
+(guest (name 106) (sex f) (hobby h1) )
+(guest (name 107) (sex f) (hobby h3) )
+(guest (name 107) (sex f) (hobby h1) )
+(guest (name 107) (sex f) (hobby h2) )
+(guest (name 107) (sex f) (hobby h5) )
+(guest (name 107) (sex f) (hobby h4) )
+(guest (name 108) (sex f) (hobby h4) )
+(guest (name 108) (sex f) (hobby h5) )
+(guest (name 108) (sex f) (hobby h1) )
+(guest (name 108) (sex f) (hobby h2) )
+(guest (name 108) (sex f) (hobby h3) )
+(guest (name 109) (sex f) (hobby h1) )
+(guest (name 109) (sex f) (hobby h2) )
+(guest (name 110) (sex m) (hobby h5) )
+(guest (name 110) (sex m) (hobby h4) )
+(guest (name 110) (sex m) (hobby h1) )
+(guest (name 110) (sex m) (hobby h2) )
+(guest (name 111) (sex f) (hobby h3) )
+(guest (name 111) (sex f) (hobby h2) )
+(guest (name 112) (sex f) (hobby h4) )
+(guest (name 112) (sex f) (hobby h3) )
+(guest (name 112) (sex f) (hobby h5) )
+(guest (name 112) (sex f) (hobby h2) )
+(guest (name 112) (sex f) (hobby h1) )
+(guest (name 113) (sex f) (hobby h1) )
+(guest (name 113) (sex f) (hobby h3) )
+(guest (name 113) (sex f) (hobby h5) )
+(guest (name 113) (sex f) (hobby h2) )
+(guest (name 114) (sex m) (hobby h3) )
+(guest (name 114) (sex m) (hobby h2) )
+(guest (name 115) (sex m) (hobby h2) )
+(guest (name 115) (sex m) (hobby h1) )
+(guest (name 115) (sex m) (hobby h5) )
+(guest (name 115) (sex m) (hobby h4) )
+(guest (name 116) (sex m) (hobby h3) )
+(guest (name 116) (sex m) (hobby h4) )
+(guest (name 116) (sex m) (hobby h5) )
+(guest (name 116) (sex m) (hobby h1) )
+(guest (name 117) (sex f) (hobby h4) )
+(guest (name 117) (sex f) (hobby h5) )
+(guest (name 117) (sex f) (hobby h2) )
+(guest (name 118) (sex f) (hobby h2) )
+(guest (name 118) (sex f) (hobby h4) )
+(guest (name 118) (sex f) (hobby h3) )
+(guest (name 119) (sex m) (hobby h5) )
+(guest (name 119) (sex m) (hobby h3) )
+(guest (name 120) (sex m) (hobby h5) )
+(guest (name 120) (sex m) (hobby h1) )
+(guest (name 120) (sex m) (hobby h3) )
+(guest (name 120) (sex m) (hobby h2) )
+(guest (name 120) (sex m) (hobby h4) )
+(guest (name 121) (sex f) (hobby h4) )
+(guest (name 121) (sex f) (hobby h2) )
+(guest (name 121) (sex f) (hobby h3) )
+(guest (name 121) (sex f) (hobby h5) )
+(guest (name 122) (sex m) (hobby h1) )
+(guest (name 122) (sex m) (hobby h2) )
+(guest (name 122) (sex m) (hobby h5) )
+(guest (name 123) (sex m) (hobby h2) )
+(guest (name 123) (sex m) (hobby h3) )
+(guest (name 123) (sex m) (hobby h1) )
+(guest (name 123) (sex m) (hobby h5) )
+(guest (name 124) (sex f) (hobby h2) )
+(guest (name 124) (sex f) (hobby h3) )
+(guest (name 124) (sex f) (hobby h4) )
+(guest (name 125) (sex f) (hobby h3) )
+(guest (name 125) (sex f) (hobby h5) )
+(guest (name 125) (sex f) (hobby h2) )
+(guest (name 125) (sex f) (hobby h4) )
+(guest (name 126) (sex f) (hobby h2) )
+(guest (name 126) (sex f) (hobby h3) )
+(guest (name 126) (sex f) (hobby h1) )
+(guest (name 126) (sex f) (hobby h4) )
+(guest (name 127) (sex f) (hobby h5) )
+(guest (name 127) (sex f) (hobby h1) )
+(guest (name 128) (sex f) (hobby h2) )
+(guest (name 128) (sex f) (hobby h4) )
+(guest (name 128) (sex f) (hobby h1) )
+(guest (name 128) (sex f) (hobby h3) )
+(last_seat (seat 128) )
+(context (state start) )

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners16.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners16.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners16.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,42 @@
+(guest (name n1) (sex f) (hobby h3))
+(guest (name n1) (sex f) (hobby h1))
+(guest (name n1) (sex f) (hobby h2))
+(guest (name n2) (sex f) (hobby h3))
+(guest (name n2) (sex f) (hobby h2))
+(guest (name n3) (sex m) (hobby h1))
+(guest (name n3) (sex m) (hobby h3))
+(guest (name n4) (sex m) (hobby h2))
+(guest (name n4) (sex m) (hobby h1))
+(guest (name n5) (sex m) (hobby h2))
+(guest (name n5) (sex m) (hobby h3))
+(guest (name n6) (sex m) (hobby h2))
+(guest (name n6) (sex m) (hobby h1))
+(guest (name n7) (sex f) (hobby h2))
+(guest (name n7) (sex f) (hobby h1))
+(guest (name n7) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h2))
+(guest (name n9) (sex f) (hobby h1))
+(guest (name n9) (sex f) (hobby h3))
+(guest (name n9) (sex f) (hobby h2))
+(guest (name n10) (sex m) (hobby h2))
+(guest (name n10) (sex m) (hobby h3))
+(guest (name n11) (sex m) (hobby h3))
+(guest (name n11) (sex m) (hobby h2))
+(guest (name n11) (sex m) (hobby h1))
+(guest (name n12) (sex m) (hobby h3))
+(guest (name n12) (sex m) (hobby h1))
+(guest (name n13) (sex m) (hobby h2))
+(guest (name n13) (sex m) (hobby h3))
+(guest (name n13) (sex m) (hobby h1))
+(guest (name n14) (sex f) (hobby h3))
+(guest (name n14) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h3))
+(guest (name n15) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h1))
+(last_seat (seat 16))
+
+(context (state start))

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners32.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners32.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners32.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,84 @@
+(guest (name n1) (sex m) (hobby h1))
+(guest (name n1) (sex m) (hobby h3))
+(guest (name n2) (sex f) (hobby h3))
+(guest (name n2) (sex f) (hobby h2))
+(guest (name n2) (sex f) (hobby h1))
+(guest (name n3) (sex f) (hobby h1))
+(guest (name n3) (sex f) (hobby h2))
+(guest (name n4) (sex f) (hobby h3))
+(guest (name n4) (sex f) (hobby h1))
+(guest (name n5) (sex f) (hobby h1))
+(guest (name n5) (sex f) (hobby h2))
+(guest (name n6) (sex m) (hobby h1))
+(guest (name n6) (sex m) (hobby h2))
+(guest (name n6) (sex m) (hobby h3))
+(guest (name n7) (sex f) (hobby h2))
+(guest (name n7) (sex f) (hobby h1))
+(guest (name n7) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h1))
+(guest (name n8) (sex f) (hobby h3))
+(guest (name n8) (sex f) (hobby h2))
+(guest (name n9) (sex f) (hobby h1))
+(guest (name n9) (sex f) (hobby h3))
+(guest (name n9) (sex f) (hobby h2))
+(guest (name n10) (sex m) (hobby h2))
+(guest (name n10) (sex m) (hobby h1))
+(guest (name n11) (sex m) (hobby h2))
+(guest (name n11) (sex m) (hobby h1))
+(guest (name n12) (sex m) (hobby h3))
+(guest (name n12) (sex m) (hobby h2))
+(guest (name n13) (sex m) (hobby h1))
+(guest (name n13) (sex m) (hobby h3))
+(guest (name n14) (sex m) (hobby h3))
+(guest (name n14) (sex m) (hobby h2))
+(guest (name n15) (sex f) (hobby h2))
+(guest (name n15) (sex f) (hobby h1))
+(guest (name n15) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h3))
+(guest (name n16) (sex f) (hobby h2))
+(guest (name n16) (sex f) (hobby h1))
+(guest (name n17) (sex m) (hobby h3))
+(guest (name n17) (sex m) (hobby h2))
+(guest (name n18) (sex f) (hobby h2))
+(guest (name n18) (sex f) (hobby h1))
+(guest (name n19) (sex f) (hobby h1))
+(guest (name n19) (sex f) (hobby h2))
+(guest (name n19) (sex f) (hobby h3))
+(guest (name n20) (sex f) (hobby h1))
+(guest (name n20) (sex f) (hobby h2))
+(guest (name n20) (sex f) (hobby h3))
+(guest (name n21) (sex m) (hobby h2))
+(guest (name n21) (sex m) (hobby h3))
+(guest (name n21) (sex m) (hobby h1))
+(guest (name n22) (sex f) (hobby h1))
+(guest (name n22) (sex f) (hobby h2))
+(guest (name n22) (sex f) (hobby h3))
+(guest (name n23) (sex f) (hobby h3))
+(guest (name n23) (sex f) (hobby h1))
+(guest (name n23) (sex f) (hobby h2))
+(guest (name n24) (sex m) (hobby h1))
+(guest (name n24) (sex m) (hobby h3))
+(guest (name n25) (sex f) (hobby h3))
+(guest (name n25) (sex f) (hobby h2))
+(guest (name n25) (sex f) (hobby h1))
+(guest (name n26) (sex f) (hobby h3))
+(guest (name n26) (sex f) (hobby h2))
+(guest (name n26) (sex f) (hobby h1))
+(guest (name n27) (sex m) (hobby h3))
+(guest (name n27) (sex m) (hobby h1))
+(guest (name n27) (sex m) (hobby h2))
+(guest (name n28) (sex m) (hobby h3))
+(guest (name n28) (sex m) (hobby h1))
+(guest (name n29) (sex m) (hobby h3))
+(guest (name n29) (sex m) (hobby h2))
+(guest (name n29) (sex m) (hobby h1))
+(guest (name n30) (sex m) (hobby h2))
+(guest (name n30) (sex m) (hobby h1))
+(guest (name n30) (sex m) (hobby h3))
+(guest (name n31) (sex m) (hobby h2))
+(guest (name n31) (sex m) (hobby h1))
+(guest (name n32) (sex m) (hobby h1))
+(guest (name n32) (sex m) (hobby h3))
+(guest (name n32) (sex m) (hobby h2))
+(last_seat (seat 32))
+(context (state start))

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners5.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners5.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners5.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,11 @@
+(guest (name n1) (sex m) (hobby  h1)  )
+(guest (name n2) (sex f) (hobby  h1)  )
+(guest (name n2) (sex f) (hobby  h3)  )
+(guest (name n3) (sex m) (hobby  h3)  )
+(guest (name n3) (sex m) (hobby  h1)  )
+(guest (name n4) (sex f) (hobby  h1)  )
+(guest (name n4) (sex f) (hobby  h3)  )
+(guest (name n5) (sex f) (hobby  h2)  )
+(guest (name n5) (sex f) (hobby  h1)  )
+(last_seat (seat 5)  )
+(context (state start))
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners64.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners64.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners64.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,169 @@
+(guest (name 1) (sex m) (hobby h2) )
+(guest (name 1) (sex m) (hobby h1) )
+(guest (name 1) (sex m) (hobby h3) )
+(guest (name 2) (sex f) (hobby h2) )
+(guest (name 2) (sex f) (hobby h1) )
+(guest (name 2) (sex f) (hobby h3) )
+(guest (name 3) (sex m) (hobby h3) )
+(guest (name 3) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h3) )
+(guest (name 4) (sex m) (hobby h2) )
+(guest (name 4) (sex m) (hobby h1) )
+(guest (name 5) (sex m) (hobby h2) )
+(guest (name 5) (sex m) (hobby h1) )
+(guest (name 5) (sex m) (hobby h3) )
+(guest (name 6) (sex m) (hobby h2) )
+(guest (name 6) (sex m) (hobby h3) )
+(guest (name 6) (sex m) (hobby h1) )
+(guest (name 7) (sex f) (hobby h1) )
+(guest (name 7) (sex f) (hobby h2) )
+(guest (name 7) (sex f) (hobby h3) )
+(guest (name 8) (sex m) (hobby h3) )
+(guest (name 8) (sex m) (hobby h1) )
+(guest (name 9) (sex m) (hobby h2) )
+(guest (name 9) (sex m) (hobby h3) )
+(guest (name 9) (sex m) (hobby h1) )
+(guest (name 10) (sex m) (hobby h3) )
+(guest (name 10) (sex m) (hobby h2) )
+(guest (name 10) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h1) )
+(guest (name 11) (sex m) (hobby h3) )
+(guest (name 11) (sex m) (hobby h2) )
+(guest (name 12) (sex f) (hobby h3) )
+(guest (name 12) (sex f) (hobby h1) )
+(guest (name 12) (sex f) (hobby h2) )
+(guest (name 13) (sex m) (hobby h2) )
+(guest (name 13) (sex m) (hobby h3) )
+(guest (name 14) (sex m) (hobby h1) )
+(guest (name 14) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h2) )
+(guest (name 15) (sex m) (hobby h3) )
+(guest (name 15) (sex m) (hobby h1) )
+(guest (name 16) (sex f) (hobby h2) )
+(guest (name 16) (sex f) (hobby h3) )
+(guest (name 17) (sex f) (hobby h3) )
+(guest (name 17) (sex f) (hobby h2) )
+(guest (name 18) (sex m) (hobby h1) )
+(guest (name 18) (sex m) (hobby h3) )
+(guest (name 18) (sex m) (hobby h2) )
+(guest (name 19) (sex f) (hobby h3) )
+(guest (name 19) (sex f) (hobby h1) )
+(guest (name 20) (sex f) (hobby h1) )
+(guest (name 20) (sex f) (hobby h3) )
+(guest (name 20) (sex f) (hobby h2) )
+(guest (name 21) (sex m) (hobby h2) )
+(guest (name 21) (sex m) (hobby h3) )
+(guest (name 22) (sex m) (hobby h2) )
+(guest (name 22) (sex m) (hobby h3) )
+(guest (name 23) (sex f) (hobby h1) )
+(guest (name 23) (sex f) (hobby h2) )
+(guest (name 24) (sex f) (hobby h3) )
+(guest (name 24) (sex f) (hobby h1) )
+(guest (name 24) (sex f) (hobby h2) )
+(guest (name 25) (sex f) (hobby h3) )
+(guest (name 25) (sex f) (hobby h1) )
+(guest (name 25) (sex f) (hobby h2) )
+(guest (name 26) (sex m) (hobby h2) )
+(guest (name 26) (sex m) (hobby h1) )
+(guest (name 26) (sex m) (hobby h3) )
+(guest (name 27) (sex f) (hobby h2) )
+(guest (name 27) (sex f) (hobby h3) )
+(guest (name 27) (sex f) (hobby h1) )
+(guest (name 28) (sex m) (hobby h1) )
+(guest (name 28) (sex m) (hobby h2) )
+(guest (name 29) (sex f) (hobby h2) )
+(guest (name 29) (sex f) (hobby h3) )
+(guest (name 29) (sex f) (hobby h1) )
+(guest (name 30) (sex f) (hobby h2) )
+(guest (name 30) (sex f) (hobby h1) )
+(guest (name 30) (sex f) (hobby h3) )
+(guest (name 31) (sex m) (hobby h1) )
+(guest (name 31) (sex m) (hobby h2) )
+(guest (name 31) (sex m) (hobby h3) )
+(guest (name 32) (sex m) (hobby h1) )
+(guest (name 32) (sex m) (hobby h2) )
+(guest (name 33) (sex m) (hobby h2) )
+(guest (name 33) (sex m) (hobby h3) )
+(guest (name 33) (sex m) (hobby h1) )
+(guest (name 34) (sex f) (hobby h2) )
+(guest (name 34) (sex f) (hobby h1) )
+(guest (name 34) (sex f) (hobby h3) )
+(guest (name 35) (sex f) (hobby h2) )
+(guest (name 35) (sex f) (hobby h3) )
+(guest (name 36) (sex m) (hobby h2) )
+(guest (name 36) (sex m) (hobby h1) )
+(guest (name 37) (sex m) (hobby h2) )
+(guest (name 37) (sex m) (hobby h1) )
+(guest (name 38) (sex f) (hobby h1) )
+(guest (name 38) (sex f) (hobby h3) )
+(guest (name 38) (sex f) (hobby h2) )
+(guest (name 39) (sex m) (hobby h3) )
+(guest (name 39) (sex m) (hobby h1) )
+(guest (name 39) (sex m) (hobby h2) )
+(guest (name 40) (sex f) (hobby h1) )
+(guest (name 40) (sex f) (hobby h2) )
+(guest (name 40) (sex f) (hobby h3) )
+(guest (name 41) (sex m) (hobby h2) )
+(guest (name 41) (sex m) (hobby h1) )
+(guest (name 41) (sex m) (hobby h3) )
+(guest (name 42) (sex m) (hobby h3) )
+(guest (name 42) (sex m) (hobby h1) )
+(guest (name 43) (sex m) (hobby h1) )
+(guest (name 43) (sex m) (hobby h3) )
+(guest (name 43) (sex m) (hobby h2) )
+(guest (name 44) (sex m) (hobby h3) )
+(guest (name 44) (sex m) (hobby h1) )
+(guest (name 44) (sex m) (hobby h2) )
+(guest (name 45) (sex m) (hobby h1) )
+(guest (name 45) (sex m) (hobby h2) )
+(guest (name 46) (sex f) (hobby h1) )
+(guest (name 46) (sex f) (hobby h2) )
+(guest (name 46) (sex f) (hobby h3) )
+(guest (name 47) (sex m) (hobby h1) )
+(guest (name 47) (sex m) (hobby h2) )
+(guest (name 48) (sex f) (hobby h3) )
+(guest (name 48) (sex f) (hobby h2) )
+(guest (name 49) (sex m) (hobby h3) )
+(guest (name 49) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h2) )
+(guest (name 50) (sex m) (hobby h3) )
+(guest (name 51) (sex f) (hobby h2) )
+(guest (name 51) (sex f) (hobby h1) )
+(guest (name 51) (sex f) (hobby h3) )
+(guest (name 52) (sex m) (hobby h1) )
+(guest (name 52) (sex m) (hobby h2) )
+(guest (name 52) (sex m) (hobby h3) )
+(guest (name 53) (sex f) (hobby h2) )
+(guest (name 53) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h1) )
+(guest (name 54) (sex f) (hobby h2) )
+(guest (name 54) (sex f) (hobby h3) )
+(guest (name 55) (sex f) (hobby h1) )
+(guest (name 55) (sex f) (hobby h2) )
+(guest (name 55) (sex f) (hobby h3) )
+(guest (name 56) (sex f) (hobby h2) )
+(guest (name 56) (sex f) (hobby h1) )
+(guest (name 56) (sex f) (hobby h3) )
+(guest (name 57) (sex f) (hobby h3) )
+(guest (name 57) (sex f) (hobby h2) )
+(guest (name 57) (sex f) (hobby h1) )
+(guest (name 58) (sex f) (hobby h3) )
+(guest (name 58) (sex f) (hobby h1) )
+(guest (name 58) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h1) )
+(guest (name 59) (sex f) (hobby h2) )
+(guest (name 59) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h3) )
+(guest (name 60) (sex f) (hobby h1) )
+(guest (name 61) (sex f) (hobby h3) )
+(guest (name 61) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h1) )
+(guest (name 62) (sex f) (hobby h2) )
+(guest (name 62) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h3) )
+(guest (name 63) (sex f) (hobby h1) )
+(guest (name 63) (sex f) (hobby h2) )
+(guest (name 64) (sex f) (hobby h3) )
+(guest (name 64) (sex f) (hobby h2) )  
+(last_seat (seat 64) )
+(context (state start))
\ No newline at end of file

Added: labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners8.dat
===================================================================
--- labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners8.dat	                        (rev 0)
+++ labs/jbossrules/trunk/drools-compiler/src/test/resources/org/drools/integrationtests/manners/manners8.dat	2008-04-07 02:38:36 UTC (rev 19436)
@@ -0,0 +1,21 @@
+(guest (name n1) (sex m) (hobby h3) )
+(guest (name n1) (sex m) (hobby h2) )
+(guest (name n2) (sex m) (hobby h2) )
+(guest (name n2) (sex m) (hobby h3) )
+(guest (name n3) (sex m) (hobby h1) )
+(guest (name n3) (sex m) (hobby h2) )
+(guest (name n3) (sex m) (hobby h3) )
+(guest (name n4) (sex f) (hobby h3) )
+(guest (name n4) (sex f) (hobby h2) )
+(guest (name n5) (sex f) (hobby h1) )
+(guest (name n5) (sex f) (hobby h2) )
+(guest (name n5) (sex f) (hobby h3) )
+(guest (name n6) (sex f) (hobby h3) )
+(guest (name n6) (sex f) (hobby h1) )
+(guest (name n6) (sex f) (hobby h2) )
+(guest (name n7) (sex f) (hobby h3) )
+(guest (name n7) (sex f) (hobby h2) )
+(guest (name n8) (sex m) (hobby h3) )
+(guest (name n8) (sex m) (hobby h1) )
+(last_seat (seat 8) )
+(context (state start))  
\ No newline at end of file




More information about the jboss-svn-commits mailing list