[jboss-svn-commits] JBL Code SVN: r31359 - in labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src: test/java/org/drools/guvnor/modeldriven and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Feb 2 08:54:27 EST 2010


Author: eaa
Date: 2010-02-02 08:54:26 -0500 (Tue, 02 Feb 2010)
New Revision: 31359

Modified:
   labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/RuleModel.java
   labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/modeldriven/RuleModelTest.java
Log:
Drools Compiler:
	Added automatic bound calculation when adding IPattern/IAction to RuleModel.
	Added test cases for RuleModel: add items to specific position and move them. 

Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/RuleModel.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/RuleModel.java	2010-02-02 10:38:35 UTC (rev 31358)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/main/java/org/drools/guvnor/client/modeldriven/brl/RuleModel.java	2010-02-02 13:54:26 UTC (rev 31359)
@@ -236,6 +236,12 @@
             this.lhs = new IPattern[0];
         }
 
+        if (position < 0){
+            position = 0;
+        }else if(position > this.lhs.length){
+            position = this.lhs.length;
+        }
+
         final IPattern[] list = this.lhs;
         final IPattern[] newList = new IPattern[list.length + 1];
 
@@ -285,7 +291,7 @@
         this.moveItemUp(this.rhs, itemIndex);
     }
 
-    public void moveItemDown(Object[] array,int itemIndex) {
+    private void moveItemDown(Object[] array,int itemIndex) {
 
         for (int i = 0; i < array.length; i++) {
             if (i == itemIndex) {
@@ -325,6 +331,12 @@
             this.rhs = new IAction[0];
         }
 
+        if (position < 0){
+            position = 0;
+        }else if(position > this.rhs.length){
+            position = this.rhs.length;
+        }
+
         final IAction[] list = this.rhs;
         final IAction[] newList = new IAction[list.length + 1];
 

Modified: labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/modeldriven/RuleModelTest.java
===================================================================
--- labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/modeldriven/RuleModelTest.java	2010-02-02 10:38:35 UTC (rev 31358)
+++ labs/jbossrules/branches/guvnor_expressionEditor3_baunax_esteban/drools-compiler/src/test/java/org/drools/guvnor/modeldriven/RuleModelTest.java	2010-02-02 13:54:26 UTC (rev 31359)
@@ -437,4 +437,178 @@
 		FactPattern varTypeCar = model.getBoundFact("y");
 		assertEquals("Car", varTypeCar.factType);
 	}
+
+        public void testAddItemLhsAtSpecificPosition() {
+		final RuleModel model = new RuleModel();
+
+                final FactPattern a = new FactPattern();
+		model.addLhsItem(a);
+
+                assertEquals(1, model.lhs.length);
+
+		final FactPattern b = new FactPattern();
+		model.addLhsItem(b);
+
+		assertEquals(2, model.lhs.length);
+
+                final FactPattern c = new FactPattern();
+		model.addLhsItem(c,true);
+
+		assertEquals(3, model.lhs.length);
+
+		assertEquals(a, model.lhs[0]);
+		assertEquals(b, model.lhs[1]);
+		assertEquals(c, model.lhs[2]);
+
+                final FactPattern d = new FactPattern();
+		model.addLhsItem(d,false);
+
+                assertEquals(4, model.lhs.length);
+
+		assertEquals(d, model.lhs[0]);
+		assertEquals(a, model.lhs[1]);
+		assertEquals(b, model.lhs[2]);
+		assertEquals(c, model.lhs[3]);
+
+                final FactPattern e = new FactPattern();
+		model.addLhsItem(e,2);
+
+                assertEquals(5, model.lhs.length);
+
+		assertEquals(d, model.lhs[0]);
+		assertEquals(a, model.lhs[1]);
+		assertEquals(e, model.lhs[2]);
+		assertEquals(b, model.lhs[3]);
+		assertEquals(c, model.lhs[4]);
+
+                //test auto-bound
+                final FactPattern f = new FactPattern();
+                final FactPattern g = new FactPattern();
+		model.addLhsItem(f,-1);
+		model.addLhsItem(g,100);
+
+                assertEquals(7, model.lhs.length);
+
+		assertEquals(f, model.lhs[0]);
+		assertEquals(d, model.lhs[1]);
+		assertEquals(a, model.lhs[2]);
+		assertEquals(e, model.lhs[3]);
+		assertEquals(b, model.lhs[4]);
+		assertEquals(c, model.lhs[5]);
+		assertEquals(g, model.lhs[6]);
+
+                model.moveLhsItemDown(5);
+                model.moveLhsItemUp(3);
+
+                assertEquals(7, model.lhs.length);
+
+		assertEquals(f, model.lhs[0]);
+		assertEquals(d, model.lhs[1]);
+		assertEquals(e, model.lhs[2]);
+		assertEquals(a, model.lhs[3]);
+		assertEquals(b, model.lhs[4]);
+		assertEquals(g, model.lhs[5]);
+		assertEquals(c, model.lhs[6]);
+
+                model.moveLhsItemUp(0);
+                model.moveLhsItemDown(6);
+
+                assertEquals(7, model.lhs.length);
+
+		assertEquals(f, model.lhs[0]);
+		assertEquals(d, model.lhs[1]);
+		assertEquals(e, model.lhs[2]);
+		assertEquals(a, model.lhs[3]);
+		assertEquals(b, model.lhs[4]);
+		assertEquals(g, model.lhs[5]);
+		assertEquals(c, model.lhs[6]);
+
+	}
+
+        public void testAddItemRhsAtSpecificPosition() {
+		final RuleModel model = new RuleModel();
+
+                final ActionSetField a = new ActionSetField();
+		model.addRhsItem(a);
+
+                assertEquals(1, model.rhs.length);
+
+		final ActionSetField b = new ActionSetField();
+		model.addRhsItem(b);
+
+		assertEquals(2, model.rhs.length);
+
+                final ActionSetField c = new ActionSetField();
+		model.addRhsItem(c,true);
+
+		assertEquals(3, model.rhs.length);
+
+		assertEquals(a, model.rhs[0]);
+		assertEquals(b, model.rhs[1]);
+		assertEquals(c, model.rhs[2]);
+
+                final ActionSetField d = new ActionSetField();
+		model.addRhsItem(d,false);
+
+                assertEquals(4, model.rhs.length);
+
+		assertEquals(d, model.rhs[0]);
+		assertEquals(a, model.rhs[1]);
+		assertEquals(b, model.rhs[2]);
+		assertEquals(c, model.rhs[3]);
+
+                final ActionSetField e = new ActionSetField();
+		model.addRhsItem(e,2);
+
+                assertEquals(5, model.rhs.length);
+
+		assertEquals(d, model.rhs[0]);
+		assertEquals(a, model.rhs[1]);
+		assertEquals(e, model.rhs[2]);
+		assertEquals(b, model.rhs[3]);
+		assertEquals(c, model.rhs[4]);
+
+                //test auto-bound
+                final ActionSetField f = new ActionSetField();
+                final ActionSetField g = new ActionSetField();
+		model.addRhsItem(f,-1);
+		model.addRhsItem(g,100);
+
+                assertEquals(7, model.rhs.length);
+
+		assertEquals(f, model.rhs[0]);
+		assertEquals(d, model.rhs[1]);
+		assertEquals(a, model.rhs[2]);
+		assertEquals(e, model.rhs[3]);
+		assertEquals(b, model.rhs[4]);
+		assertEquals(c, model.rhs[5]);
+		assertEquals(g, model.rhs[6]);
+
+                model.moveRhsItemDown(5);
+                model.moveRhsItemUp(3);
+
+                assertEquals(7, model.rhs.length);
+
+		assertEquals(f, model.rhs[0]);
+		assertEquals(d, model.rhs[1]);
+		assertEquals(e, model.rhs[2]);
+		assertEquals(a, model.rhs[3]);
+		assertEquals(b, model.rhs[4]);
+		assertEquals(g, model.rhs[5]);
+		assertEquals(c, model.rhs[6]);
+
+                model.moveRhsItemUp(0);
+                model.moveRhsItemDown(6);
+
+                assertEquals(7, model.rhs.length);
+
+		assertEquals(f, model.rhs[0]);
+		assertEquals(d, model.rhs[1]);
+		assertEquals(e, model.rhs[2]);
+		assertEquals(a, model.rhs[3]);
+		assertEquals(b, model.rhs[4]);
+		assertEquals(g, model.rhs[5]);
+		assertEquals(c, model.rhs[6]);
+
+	}
 }



More information about the jboss-svn-commits mailing list