[jboss-svn-commits] JBL Code SVN: r18860 - in labs/jbossrules/branches/4.0.x/drools-compiler/src/test: java/org/drools/integrationtests and 1 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Mar 11 21:01:36 EDT 2008


Author: mark.proctor at jboss.com
Date: 2008-03-11 21:01:36 -0400 (Tue, 11 Mar 2008)
New Revision: 18860

Added:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObject.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObjectHolder.java
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromArrayIteration.drl
Modified:
   labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
Log:
JBRULES-1446 ClassCastException when iterating over an array using "from"


Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObject.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObject.java	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObject.java	2008-03-12 01:01:36 UTC (rev 18860)
@@ -0,0 +1,33 @@
+package org.drools;
+
+public class DomainObject {
+
+	private String message;
+	private int value;
+	private double value2;
+
+	public String getMessage() {
+		return message;
+	}
+
+	public void setMessage(String message) {
+		this.message = message;
+	}
+
+	public int getValue() {
+		return value;
+	}
+
+	public void setValue(int value) {
+		this.value = value;
+	}
+
+	public double getValue2() {
+		return value2;
+	}
+
+	public void setValue2(double value2) {
+		this.value2 = value2;
+	}
+
+}

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObjectHolder.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObjectHolder.java	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/DomainObjectHolder.java	2008-03-12 01:01:36 UTC (rev 18860)
@@ -0,0 +1,29 @@
+package org.drools;
+
+public class DomainObjectHolder {
+
+	DomainObject[] objects = new DomainObject[3];
+
+	public DomainObjectHolder(){
+
+	objects[0] = new DomainObject();
+	objects[0].setMessage("Message1");
+	objects[0].setValue(1);
+	objects[0].setValue2(2);
+
+	objects[1] = new DomainObject();
+	objects[1].setMessage("Message2");
+	objects[1].setValue(3);
+	objects[1].setValue2(4);
+
+	objects[2] = new DomainObject();
+	objects[2].setMessage("Message3");
+	objects[2].setValue(5);
+	objects[2].setValue2(6);
+	}
+
+	public DomainObject[] getObjects(){
+	return objects;
+	}
+
+	} 

Modified: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-12 01:01:24 UTC (rev 18859)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/java/org/drools/integrationtests/MiscTest.java	2008-03-12 01:01:36 UTC (rev 18860)
@@ -45,6 +45,7 @@
 import org.drools.CheeseEqual;
 import org.drools.Cheesery;
 import org.drools.Child;
+import org.drools.DomainObjectHolder;
 import org.drools.FactA;
 import org.drools.FactB;
 import org.drools.FactC;
@@ -4248,7 +4249,30 @@
         assertSame( order1.getStatus(),
                     list.get( 0 ) );
     }
+    
+    public void testFromArrayIteration() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_FromArrayIteration.drl" ) ) );
 
+        final RuleBase ruleBase = getRuleBase();
+        ruleBase.addPackage( builder.getPackage() );
+
+        final WorkingMemory session = ruleBase.newStatefulSession();
+        List list = new ArrayList();
+        
+        session.setGlobal( "list", list );
+        session.insert( new DomainObjectHolder() );
+        
+        session.fireAllRules();
+        
+        assertEquals( 3, list.size() );
+        
+        assertEquals( "Message3" , list.get(0));
+        assertEquals( "Message2" , list.get(1));
+        assertEquals( "Message1" , list.get(2));
+        
+    }
+
     public void testSubNetworks() throws Exception {
         final PackageBuilder builder = new PackageBuilder();
         builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_SubNetworks.drl" ) ) );
@@ -4466,37 +4490,35 @@
         assertEquals( "should not have fired",
                       0,
                       list.size() );
-    }
+    }    
+    
+    public void testModifyBlock() throws Exception {
+        final PackageBuilder builder = new PackageBuilder();
+     	builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ModifyBlock.drl" ) ) );
+     	final Package pkg = builder.getPackage();
 
+     	final RuleBase ruleBase = getRuleBase();
+     	ruleBase.addPackage( pkg );
+     	final WorkingMemory workingMemory = ruleBase.newStatefulSession();
 
-	public void testModifyBlock() throws Exception {
-	        final PackageBuilder builder = new PackageBuilder();
-	        builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ModifyBlock.drl" ) ) );
-	        final Package pkg = builder.getPackage();
+     	final List list = new ArrayList();
+     	workingMemory.setGlobal( "results",
+     	                         list );
 
-	        final RuleBase ruleBase = getRuleBase();
-	        ruleBase.addPackage( pkg );
-	        final WorkingMemory workingMemory = ruleBase.newStatefulSession();
+     	Person bob = new Person( "Bob" );
+     	bob.setStatus( "hungry" );
 
-	        final List list = new ArrayList();
-	        workingMemory.setGlobal( "results",
-	                                 list );
+     	Cheese c = new Cheese();
 
-	        Person bob = new Person( "Bob" );
-	        bob.setStatus( "hungry" );
+     	workingMemory.insert( bob );
+     	workingMemory.insert( c );
 
-	        Cheese c = new Cheese();
+     	workingMemory.fireAllRules();
 
-	        workingMemory.insert( bob );
-	        workingMemory.insert( c );
-
-	        workingMemory.fireAllRules();
-
-	        assertEquals( 10, c.getPrice() );
-	        assertEquals( "fine", bob.getStatus() );
-	    }
-	
-
+     	assertEquals( 10, c.getPrice() );
+     	assertEquals( "fine", bob.getStatus() );
+    }
+    
     // this test requires mvel 1.2.19. Leaving it commented until mvel is released.
     public void testJavaModifyBlock() throws Exception {
         final PackageBuilder builder = new PackageBuilder();

Added: labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromArrayIteration.drl
===================================================================
--- labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromArrayIteration.drl	                        (rev 0)
+++ labs/jbossrules/branches/4.0.x/drools-compiler/src/test/resources/org/drools/integrationtests/test_FromArrayIteration.drl	2008-03-12 01:01:36 UTC (rev 18860)
@@ -0,0 +1,14 @@
+package org.drools.test;
+
+import  org.drools.DomainObject
+import  org.drools.DomainObjectHolder;
+
+global java.util.List list
+
+rule "Test Rule"
+when
+    $holder : DomainObjectHolder()
+    $object : DomainObject( $message : message) from $holder.objects;
+then
+    list.add( $message );
+end 
\ No newline at end of file




More information about the jboss-svn-commits mailing list