use of org.drools.workbench.models.datamodel.rule.IPattern in project drools by kiegroup.
the class RuleModelDRLPersistenceUnmarshallingTest method testSingleFieldConstraintConnectives1.
@Test
public // https://issues.jboss.org/browse/GUVNOR-2141
void testSingleFieldConstraintConnectives1() {
String drl = "package org.test;\n" + "rule \"rule1\"\n" + "dialect \"mvel\"\n" + " when\n" + " Applicant( age < 55 || > 75 )\n" + " then\n" + "end";
addModelField("org.test.Applicant", "this", "org.test.Applicant", DataType.TYPE_THIS);
addModelField("org.test.Applicant", "age", Integer.class.getName(), DataType.TYPE_NUMERIC_INTEGER);
when(dmo.getPackageName()).thenReturn("org.test");
RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl, Collections.emptyList(), dmo);
assertNotNull(m);
assertEquals("rule1", m.name);
assertEquals(1, m.lhs.length);
IPattern p = m.lhs[0];
assertTrue(p instanceof FactPattern);
FactPattern fp = (FactPattern) p;
assertEquals("Applicant", fp.getFactType());
assertEquals(1, fp.getConstraintList().getConstraints().length);
assertTrue(fp.getConstraint(0) instanceof SingleFieldConstraint);
SingleFieldConstraint sfp = (SingleFieldConstraint) fp.getConstraint(0);
assertEquals("Applicant", sfp.getFactType());
assertEquals("age", sfp.getFieldName());
assertEquals("<", sfp.getOperator());
assertEquals("55", sfp.getValue());
assertEquals(BaseSingleFieldConstraint.TYPE_LITERAL, sfp.getConstraintValueType());
assertEquals(1, sfp.getConnectives().length);
ConnectiveConstraint cc = sfp.getConnectives()[0];
assertEquals("Applicant", cc.getFactType());
assertEquals("age", cc.getFieldName());
assertEquals("|| >", cc.getOperator());
assertEquals("75", cc.getValue());
assertEquals(BaseSingleFieldConstraint.TYPE_LITERAL, cc.getConstraintValueType());
assertEqualsIgnoreWhitespace(drl, RuleModelDRLPersistenceImpl.getInstance().marshal(m));
}
use of org.drools.workbench.models.datamodel.rule.IPattern in project drools by kiegroup.
the class RuleModelDRLPersistenceUnmarshallingTest method testMultipleFromKeywords.
@Test
public // https://bugzilla.redhat.com/show_bug.cgi?id=1191737
void testMultipleFromKeywords() throws Exception {
String drl = "package org.test;\n" + "rule \"ToyWithoutName \"\n" + "dialect \"java\"\n" + "when\n" + " $father: Father()\n" + " ($kid: Kid() from $father.kids)\n" + " ($toy: Toy(name == null) from $kid.toys)\n" + "then\n" + " System.out.println(\"blabla\");\n" + "end";
addModelField("org.test.Father", "this", "org.test.Father", DataType.TYPE_THIS);
addModelField("org.test.Father", "kids", "org.test.Kid", DataType.TYPE_COLLECTION);
addModelField("org.test.Kid", "this", "org.test.Kid", DataType.TYPE_THIS);
addModelField("org.test.Kid", "toys", "org.test.Toy", DataType.TYPE_COLLECTION);
addModelField("org.test.Toy", "this", "org.test.Toy", DataType.TYPE_THIS);
addModelField("org.test.Toy", "name", "java.lang.String", DataType.TYPE_STRING);
when(dmo.getPackageName()).thenReturn("org.test");
final RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl, Collections.emptyList(), dmo);
assertNotNull(m);
assertEquals(3, m.lhs.length);
final IPattern p0 = m.lhs[0];
assertTrue(p0 instanceof FactPattern);
final FactPattern fp0 = (FactPattern) p0;
assertEquals("$father", fp0.getBoundName());
assertEquals("Father", fp0.getFactType());
final IPattern p1 = m.lhs[1];
assertTrue(p1 instanceof FromCompositeFactPattern);
final FromCompositeFactPattern fp1 = (FromCompositeFactPattern) p1;
assertEquals("$kid", fp1.getFactPattern().getBoundName());
assertEquals("Kid", fp1.getFactType());
final IPattern p2 = m.lhs[2];
assertTrue(p2 instanceof FromCompositeFactPattern);
final FromCompositeFactPattern fp2 = (FromCompositeFactPattern) p2;
assertEquals("$toy", fp2.getFactPattern().getBoundName());
assertEquals("Toy", fp2.getFactType());
assertEquals(1, m.rhs.length);
final IAction a = m.rhs[0];
assertTrue(a instanceof FreeFormLine);
final FreeFormLine affl = (FreeFormLine) a;
assertEquals("System.out.println(\"blabla\");", affl.getText());
// Check round-trip
assertEqualsIgnoreWhitespace(drl, RuleModelDRLPersistenceImpl.getInstance().marshal(m));
}
use of org.drools.workbench.models.datamodel.rule.IPattern in project drools by kiegroup.
the class RuleModelDRLPersistenceUnmarshallingTest method testRHSUpdateFactWithFormula.
@Test
public void testRHSUpdateFactWithFormula() {
// https://bugzilla.redhat.com/show_bug.cgi?id=1079253
String drl = "package org.mortgages;\n" + "import org.test.ShoppingCart\n" + "rule \"r1\"\n" + "dialect \"mvel\"\n" + "when\n" + "$sc : ShoppingCart( )\n" + "then\n" + "$sc.setCartItemPromoSavings( ($sc.cartItemPromoSavings == 0.0) ? 0.0 : $sc.cartItemPromoSavings * -1 );\n" + "update( $sc );\n" + "end\n";
addModelField("org.test.ShoppingCart", "cartItemPromoSavings", "java.lang.Double", DataType.TYPE_NUMERIC_DOUBLE);
when(dmo.getPackageName()).thenReturn("org.test");
final RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl, Collections.emptyList(), dmo);
assertNotNull(m);
assertEquals(1, m.lhs.length);
IPattern p = m.lhs[0];
assertTrue(p instanceof FactPattern);
FactPattern fp = (FactPattern) p;
assertEquals("ShoppingCart", fp.getFactType());
assertEquals("$sc", fp.getBoundName());
assertEquals(0, fp.getNumberOfConstraints());
assertEquals(1, m.rhs.length);
IAction a = m.rhs[0];
assertTrue(a instanceof ActionUpdateField);
ActionUpdateField ap = (ActionUpdateField) a;
assertEquals("$sc", ap.getVariable());
assertEquals(1, ap.getFieldValues().length);
ActionFieldValue afv = ap.getFieldValues()[0];
assertEquals("cartItemPromoSavings", afv.getField());
assertEquals("($sc.cartItemPromoSavings == 0.0) ? 0.0 : $sc.cartItemPromoSavings * -1", afv.getValue());
assertEquals(FieldNatureType.TYPE_FORMULA, afv.getNature());
}
use of org.drools.workbench.models.datamodel.rule.IPattern in project drools by kiegroup.
the class RuleModelDRLPersistenceUnmarshallingTest method actionUpdateFieldWithFormulaWithEscapedQuote.
@Test
public void actionUpdateFieldWithFormulaWithEscapedQuote() throws Exception {
String drl = "package org.mortgages;\n" + "rule \"r1\"\n" + "dialect \"mvel\"\n" + "when\n" + "$a : Application()\n" + "then\n" + "modify( $a ) {\n" + " setName( \"Pupa \\\"\" + 20 + \"\\\" Smurf\" )" + "}\n" + "end";
addModelField("org.mortgages.Applicant", "this", "org.mortgages.Applicant", DataType.TYPE_THIS);
addModelField("org.mortgages.Applicant", "name", String.class.getName(), DataType.TYPE_STRING);
when(dmo.getPackageName()).thenReturn("org.mortgages");
RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl, Collections.emptyList(), dmo);
assertNotNull(m);
assertEquals("r1", m.name);
// LHS Pattern
assertEquals(1, m.lhs.length);
IPattern p = m.lhs[0];
assertTrue(p instanceof FactPattern);
FactPattern fp = (FactPattern) p;
assertEquals("Application", fp.getFactType());
assertEquals(0, fp.getNumberOfConstraints());
assertEquals(1, m.rhs.length);
assertTrue(m.rhs[0] instanceof ActionUpdateField);
ActionUpdateField auf = (ActionUpdateField) m.rhs[0];
assertEquals("$a", auf.getVariable());
assertEquals(1, auf.getFieldValues().length);
ActionFieldValue afv0 = auf.getFieldValues()[0];
assertEquals("name", afv0.getField());
assertEquals("\"Pupa \\\"\" + 20 + \"\\\" Smurf\"", afv0.getValue());
assertEquals(FieldNatureType.TYPE_FORMULA, afv0.getNature());
}
use of org.drools.workbench.models.datamodel.rule.IPattern in project drools by kiegroup.
the class RuleModelDRLPersistenceUnmarshallingTest method testSingleFieldConstraintCEPOperatorTimeLength.
@Test
public void testSingleFieldConstraintCEPOperatorTimeLength() {
String drl = "rule \"rule1\"\n" + "when\n" + "Event() over window:length (10)\n" + "then\n" + "end";
RuleModel m = RuleModelDRLPersistenceImpl.getInstance().unmarshal(drl, Collections.emptyList(), dmo);
assertNotNull(m);
assertEquals("rule1", m.name);
assertEquals(1, m.lhs.length);
IPattern p1 = m.lhs[0];
assertTrue(p1 instanceof FactPattern);
FactPattern fp1 = (FactPattern) p1;
assertEquals("Event", fp1.getFactType());
assertNull(fp1.getBoundName());
assertEquals(0, fp1.getNumberOfConstraints());
assertNotNull(fp1.getWindow());
CEPWindow window = fp1.getWindow();
assertEquals("over window:length", window.getOperator());
assertEquals(2, window.getParameters().size());
assertEquals("10", window.getParameter("1"));
assertEquals("org.drools.workbench.models.commons.backend.rule.CEPWindowOperatorParameterDRLBuilder", window.getParameter("org.drools.workbench.models.commons.backend.rule.operatorParameterGenerator"));
}
Aggregations