Skip to content

Commit

Permalink
BZ-986000 - DRL-to-RuleModel marshalling improvements
Browse files Browse the repository at this point in the history
(cherry picked from commit decbe02)
  • Loading branch information
Rikkola authored and mariofusco committed Jan 2, 2014
1 parent c2a52d2 commit 49f8ebe
Showing 1 changed file with 55 additions and 1 deletion.
Expand Up @@ -35,6 +35,7 @@
import org.drools.workbench.models.datamodel.rule.CompositeFactPattern;
import org.drools.workbench.models.datamodel.rule.CompositeFieldConstraint;
import org.drools.workbench.models.datamodel.rule.ExpressionField;
import org.drools.workbench.models.datamodel.rule.ExpressionPart;
import org.drools.workbench.models.datamodel.rule.ExpressionUnboundFact;
import org.drools.workbench.models.datamodel.rule.ExpressionVariable;
import org.drools.workbench.models.datamodel.rule.FactPattern;
Expand Down Expand Up @@ -2078,7 +2079,7 @@ public void testFieldVars() throws Exception {
" then\n" +
"end";

addModelField("Company",
addModelField("Customer",
"contact",
"Contact",
"Contact");
Expand All @@ -2096,6 +2097,59 @@ public void testFieldVars() throws Exception {

}

@Test
@Ignore("https://bugzilla.redhat.com/show_bug.cgi?id=986000 - DRL-to-RuleModel marshalling improvements")
public void testSingleFieldConstraintEBLeftSide() throws Exception {
String drl = "" +
"rule \" broken \""
+ "dialect \"mvel\""
+ " when"
+ " Customer( contact != null , contact.tel1 > \"15\" )"
+ " then"
+ "end";

addModelField("Customer",
"contact",
"Contact",
"Contact");
addModelField("Contact",
"tel1",
"String",
"String");

RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl,
dmo);

FactPattern pattern = (FactPattern) m.lhs[0];
SingleFieldConstraint constraint = (SingleFieldConstraint)pattern.getFieldConstraints()[0];

assertEquals("Customer",constraint.getFactType());
assertEquals("contact",constraint.getFieldName());
assertEquals("Contact",constraint.getFieldType());

SingleFieldConstraintEBLeftSide constraint2 = (SingleFieldConstraintEBLeftSide) pattern.getFieldConstraints()[1];
assertEquals("tel1", constraint2.getFieldName());
assertEquals("java.lang.String", constraint2.getFieldType());
assertEquals("15", constraint2.getValue());
assertEquals(">", constraint2.getOperator());

assertEquals(3, constraint2.getExpressionLeftSide().getParts());
ExpressionPart part1 = constraint2.getExpressionLeftSide().getParts().get(0);
assertEquals("Customer", part1.getName());
assertEquals("Customer", part1.getClassType());
assertEquals("Customer", part1.getGenericType());

ExpressionPart part2 = constraint2.getExpressionLeftSide().getParts().get(1);
assertEquals("contact", part2.getName());
assertEquals("Contact", part2.getClassType());
assertEquals("Contact", part2.getGenericType());

ExpressionPart part3 = constraint2.getExpressionLeftSide().getParts().get(2);
assertEquals("tel1", part3.getName());
assertEquals("java.lang.String", part3.getClassType());
assertEquals("String", part3.getGenericType());
}

private void assertEqualsIgnoreWhitespace( final String expected,
final String actual ) {
final String cleanExpected = expected.replaceAll( "\\s+",
Expand Down

0 comments on commit 49f8ebe

Please sign in to comment.