use of org.drools.drl.ast.descr.AndDescr in project drools by kiegroup.
the class KiePMMLDescrLhsFactoryTest method declareNestedConstraintAnd.
@Test
public void declareNestedConstraintAnd() {
String temperatureField = "TEMPERATURE";
String humidityField = "HUMIDITY";
final List<KiePMMLFieldOperatorValue> nestedKiePMMLFieldOperatorValues = Arrays.asList(new KiePMMLFieldOperatorValue(humidityField, BOOLEAN_OPERATOR.OR, Collections.singletonList(new KiePMMLOperatorValue(OPERATOR.LESS_THAN, 56)), null), new KiePMMLFieldOperatorValue(humidityField, BOOLEAN_OPERATOR.OR, Collections.singletonList(new KiePMMLOperatorValue(OPERATOR.GREATER_THAN, 91)), null));
List<KiePMMLFieldOperatorValue> kiePMMLOperatorValues = Collections.singletonList(new KiePMMLFieldOperatorValue(temperatureField, BOOLEAN_OPERATOR.AND, Collections.singletonList(new KiePMMLOperatorValue(OPERATOR.LESS_THAN, 35)), nestedKiePMMLFieldOperatorValues));
KiePMMLDescrLhsFactory.factory(lhsBuilder).declareConstraintsAndOr(kiePMMLOperatorValues, lhsBuilder.and());
assertNotNull(lhsBuilder.getDescr());
assertEquals(1, lhsBuilder.getDescr().getDescrs().size());
assertTrue(lhsBuilder.getDescr().getDescrs().get(0) instanceof AndDescr);
AndDescr baseAndDescr = (AndDescr) lhsBuilder.getDescr().getDescrs().get(0);
final List<BaseDescr> descrs = baseAndDescr.getDescrs();
assertNotNull(descrs);
assertEquals(2, descrs.size());
// First KiePMMLFieldOperatorValue
assertTrue(descrs.get(0) instanceof PatternDescr);
PatternDescr patternDescr = (PatternDescr) descrs.get(0);
assertEquals(temperatureField, patternDescr.getObjectType());
assertNull(patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
AndDescr andDescr = (AndDescr) patternDescr.getConstraint();
assertEquals(1, andDescr.getDescrs().size());
assertTrue(andDescr.getDescrs().get(0) instanceof ExprConstraintDescr);
ExprConstraintDescr exprConstraintDescr = (ExprConstraintDescr) andDescr.getDescrs().get(0);
assertFalse(exprConstraintDescr.isNegated());
assertEquals(ExprConstraintDescr.Type.NAMED, exprConstraintDescr.getType());
String expected = "value < 35";
assertEquals(expected, exprConstraintDescr.getExpression());
// Nested KiePMMLFieldOperatorValues
assertTrue(descrs.get(1) instanceof AndDescr);
AndDescr nestedAndDescr = (AndDescr) descrs.get(1);
assertEquals(2, nestedAndDescr.getDescrs().size());
final List<BaseDescr> nestedDescrs = nestedAndDescr.getDescrs();
// First nested KiePMMLFieldOperatorValue
assertTrue(nestedDescrs.get(0) instanceof PatternDescr);
patternDescr = (PatternDescr) nestedDescrs.get(0);
assertEquals(humidityField, patternDescr.getObjectType());
assertNull(patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
andDescr = (AndDescr) patternDescr.getConstraint();
assertEquals(1, andDescr.getDescrs().size());
assertTrue(andDescr.getDescrs().get(0) instanceof ExprConstraintDescr);
exprConstraintDescr = (ExprConstraintDescr) andDescr.getDescrs().get(0);
assertFalse(exprConstraintDescr.isNegated());
assertEquals(ExprConstraintDescr.Type.NAMED, exprConstraintDescr.getType());
expected = "value < 56";
assertEquals(expected, exprConstraintDescr.getExpression());
// Second nested KiePMMLFieldOperatorValue
assertTrue(nestedDescrs.get(1) instanceof PatternDescr);
patternDescr = (PatternDescr) nestedDescrs.get(1);
assertEquals(humidityField, patternDescr.getObjectType());
assertNull(patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
andDescr = (AndDescr) patternDescr.getConstraint();
assertEquals(1, andDescr.getDescrs().size());
assertTrue(andDescr.getDescrs().get(0) instanceof ExprConstraintDescr);
exprConstraintDescr = (ExprConstraintDescr) andDescr.getDescrs().get(0);
assertFalse(exprConstraintDescr.isNegated());
assertEquals(ExprConstraintDescr.Type.NAMED, exprConstraintDescr.getType());
expected = "value > 91";
assertEquals(expected, exprConstraintDescr.getExpression());
}
use of org.drools.drl.ast.descr.AndDescr in project drools by kiegroup.
the class KiePMMLDescrLhsFactoryTest method commonDeclarePatternWithConstraint.
@Test
public void commonDeclarePatternWithConstraint() {
String patternType = "TEMPERATURE";
String constraintsString = "value < 35";
final CEDescrBuilder<CEDescrBuilder<CEDescrBuilder<RuleDescrBuilder, AndDescr>, NotDescr>, ExistsDescr> existsBuilder = lhsBuilder.not().exists();
KiePMMLDescrLhsFactory.factory(lhsBuilder).commonDeclarePatternWithConstraint(existsBuilder, patternType, constraintsString);
assertNotNull(existsBuilder.getDescr());
final List<BaseDescr> descrs = existsBuilder.getDescr().getDescrs();
assertNotNull(descrs);
assertEquals(1, descrs.size());
assertTrue(descrs.get(0) instanceof PatternDescr);
PatternDescr patternDescr = (PatternDescr) descrs.get(0);
assertEquals(patternType, patternDescr.getObjectType());
assertNull(patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
AndDescr andDescr = (AndDescr) patternDescr.getConstraint();
assertEquals(1, andDescr.getDescrs().size());
assertTrue(andDescr.getDescrs().get(0) instanceof ExprConstraintDescr);
ExprConstraintDescr exprConstraintDescr = (ExprConstraintDescr) andDescr.getDescrs().get(0);
assertFalse(exprConstraintDescr.isNegated());
assertEquals(ExprConstraintDescr.Type.NAMED, exprConstraintDescr.getType());
assertEquals(constraintsString, exprConstraintDescr.getExpression());
}
use of org.drools.drl.ast.descr.AndDescr in project drools by kiegroup.
the class KiePMMLDescrLhsFactoryTest method declareIfBreak.
@Test
public void declareIfBreak() {
String ifBreakField = "TEMPERATURE";
String ifBreakOperator = "<";
Object ifBreakValue = 24;
KiePMMLDescrLhsFactory.factory(lhsBuilder).declareIfBreak(ifBreakField, ifBreakOperator, ifBreakValue);
assertNotNull(lhsBuilder.getDescr());
final List<BaseDescr> descrs = lhsBuilder.getDescr().getDescrs();
assertNotNull(descrs);
assertEquals(2, descrs.size());
assertTrue(descrs.get(0) instanceof PatternDescr);
assertTrue(descrs.get(1) instanceof ConditionalBranchDescr);
PatternDescr patternDescr = (PatternDescr) descrs.get(0);
assertEquals(ifBreakField, patternDescr.getObjectType());
assertEquals(INPUT_FIELD, patternDescr.getIdentifier());
assertTrue(patternDescr.getConstraint() instanceof AndDescr);
ConditionalBranchDescr conditionalBranchDescr = (ConditionalBranchDescr) descrs.get(1);
String expectedCondition = String.format(INPUT_FIELD_CONDITIONAL, ifBreakOperator, ifBreakValue);
assertEquals(expectedCondition, conditionalBranchDescr.getCondition().getContent());
assertTrue(conditionalBranchDescr.getConsequence().isBreaking());
assertEquals(BREAK_LABEL, conditionalBranchDescr.getConsequence().getText());
}
Aggregations