# HG changeset patch
# User Chris DeLashmutt <cdelashmutt@spectrumk12.com>
# Date 1301370273 14400
# Node ID fb37bb94d9c3b576864da6da90c223cfcf9176cd
# Parent  96b1916f0b549840bfb94abcba923316ca71d0fb
Adding test case for failing serialize/deserialize of Collect after OR CE.

diff -r 96b1916f0b54 -r fb37bb94d9c3 drools-compiler/src/test/java/org/drools/integrationtests/CollectTest.java
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drools-compiler/src/test/java/org/drools/integrationtests/CollectTest.java	Mon Mar 28 23:44:33 2011 -0400
@@ -0,0 +1,71 @@
+package org.drools.integrationtests;
+
+import static org.junit.Assert.assertTrue;
+
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+
+import org.drools.Cheese;
+import org.drools.Cheesery;
+import org.drools.RuleBase;
+import org.drools.RuleBaseFactory;
+import org.drools.StatefulSession;
+import org.drools.compiler.PackageBuilder;
+import org.drools.rule.Package;
+import org.junit.Test;
+
+public class CollectTest
+{
+	@Test
+	public void testCollectAfterOrCE()
+	throws Exception
+	{
+		//Set up facts
+		final Cheesery bonFromage = new Cheesery();
+		bonFromage.addCheese(new Cheese("cheddar"));
+		bonFromage.addCheese(new Cheese("cheddar"));
+
+		//Test in memory compile of DRL
+	    final PackageBuilder builder = new PackageBuilder();
+	    builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_OrCEFollowedByCollect.drl" ) ) );
+	    Package pkg = builder.getPackage();
+	    RuleBase ruleBase = getRuleBase();
+	    
+	    ruleBase.addPackage( pkg );
+
+	    StatefulSession session = ruleBase.newStatefulSession();
+	    ArrayList<Boolean> results = new ArrayList<Boolean>();
+	    session.setGlobal("results", results);
+	    
+	    session.insert(bonFromage);
+	    
+	    session.fireAllRules();
+	    
+	    assertTrue(true == results.get(0));
+	    
+	    //Serialize and test again
+	    pkg = SerializationHelper.serializeObject(pkg);
+	    
+	    ruleBase = getRuleBase();
+
+	    ruleBase.addPackage( pkg );
+
+	    session = ruleBase.newStatefulSession();
+	    results = new ArrayList<Boolean>();
+	    session.setGlobal("results", results);
+
+	    session.insert(bonFromage);
+	    
+	    session.fireAllRules();
+	    
+	    assertTrue(true == results.get(0));
+	    
+	}
+
+	private RuleBase getRuleBase()
+	{
+		RuleBase ruleBase = RuleBaseFactory.newRuleBase( RuleBase.RETEOO,
+                null );
+		return ruleBase;
+	}
+}
diff -r 96b1916f0b54 -r fb37bb94d9c3 drools-compiler/src/test/resources/org/drools/integrationtests/test_OrCEFollowedByCollect.drl
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/drools-compiler/src/test/resources/org/drools/integrationtests/test_OrCEFollowedByCollect.drl	Mon Mar 28 23:44:33 2011 -0400
@@ -0,0 +1,14 @@
+package org.drools;
+
+import java.util.ArrayList;
+
+global java.util.List results;
+
+rule "collect after or'd evals"
+    when
+        $bonFromage : Cheesery()
+        (eval(true) || eval(true))
+		ArrayList( size > 1 ) from collect(Cheese( type == "cheddar") from $bonFromage.cheeses)
+    then
+       results.add(true);
+end
\ No newline at end of file