use of org.drools.compiler.lang.descr.PatternDescr in project drools by kiegroup.
the class KnowledgeBuilderTest method testReturnValue.
@Test
public void testReturnValue() throws Exception {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
final PackageDescr packageDescr = new PackageDescr("p1");
final RuleDescr ruleDescr = new RuleDescr("rule-1");
packageDescr.addRule(ruleDescr);
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs(lhs);
final PatternDescr pattern = new PatternDescr(Cheese.class.getName(), "stilton");
lhs.addDescr(pattern);
BindingDescr fieldBindingDescr = new BindingDescr("x", "price");
pattern.addConstraint(fieldBindingDescr);
fieldBindingDescr = new BindingDescr("y", "price");
pattern.addConstraint(fieldBindingDescr);
packageDescr.addGlobal(new GlobalDescr("map", "java.util.Map"));
pattern.addConstraint(new ExprConstraintDescr("price == (( (Integer) map.get( new Integer( x )) ).intValue() * y)"));
ruleDescr.setConsequence("update(stilton);");
builder.addPackage(packageDescr);
assertEquals("Should not have any errors", 0, builder.getErrors().getErrors().length);
}
use of org.drools.compiler.lang.descr.PatternDescr in project drools by kiegroup.
the class KnowledgeBuilderTest method testDuplicateDeclaration.
// TODO we now allow bindings on declarations, so update the test for this
@Test
// TODO we now allow bindings on declarations, so update the test for this
@Ignore
public void testDuplicateDeclaration() {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
final PackageDescr packageDescr = new PackageDescr("p1");
final RuleDescr ruleDescr = new RuleDescr("rule-1");
packageDescr.addRule(ruleDescr);
final AndDescr lhs = new AndDescr();
ruleDescr.setLhs(lhs);
final PatternDescr pattern1 = new PatternDescr(Cheese.class.getName());
lhs.addDescr(pattern1);
final BindingDescr fieldBindingDescr = new BindingDescr("$type", "type");
final FieldConstraintDescr literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("==", "stilton"));
pattern1.addConstraint(fieldBindingDescr);
pattern1.addConstraint(literalDescr);
final PatternDescr pattern2 = new PatternDescr(Cheese.class.getName());
lhs.addDescr(pattern2);
pattern2.addConstraint(fieldBindingDescr);
ruleDescr.setConsequence("update(stilton);");
builder.addPackage(packageDescr);
assertLength(2, builder.getErrors().getErrors());
}
use of org.drools.compiler.lang.descr.PatternDescr in project drools by kiegroup.
the class KnowledgeBuilderTest method createBasicPackageWithOneRule.
private PackageDescr createBasicPackageWithOneRule(int line, int col) {
PackageDescr packageDescr = new PackageDescr("p1");
RuleDescr ruleDescr = new RuleDescr("rule-1");
ruleDescr.setLocation(line, col);
packageDescr.addRule(ruleDescr);
AndDescr lhs = new AndDescr();
ruleDescr.setLhs(lhs);
PatternDescr patternDescr = new PatternDescr(Cheese.class.getName(), "stilton");
FieldConstraintDescr literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("==", null));
patternDescr.addConstraint(literalDescr);
ruleDescr.setConsequence("");
return packageDescr;
}
use of org.drools.compiler.lang.descr.PatternDescr in project drools by kiegroup.
the class KnowledgeBuilderTest method testTypeDeclarationNewBean.
@Test
public void testTypeDeclarationNewBean() throws Exception {
PackageDescr pkgDescr = new PackageDescr("org.drools.compiler.test");
TypeDeclarationDescr typeDescr = new TypeDeclarationDescr("NewBean");
TypeFieldDescr f1 = new TypeFieldDescr("name", new PatternDescr("String"));
TypeFieldDescr f2 = new TypeFieldDescr("age", new PatternDescr("int"));
typeDescr.addField(f1);
typeDescr.addField(f2);
pkgDescr.addTypeDeclaration(typeDescr);
KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
builder.addPackage(pkgDescr);
InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName());
assertEquals(1, pkg.getTypeDeclarations().size());
TypeDeclaration type = pkg.getTypeDeclaration("NewBean");
assertEquals("NewBean", type.getTypeName());
assertEquals(Role.Type.FACT, type.getRole());
assertEquals("org.drools.compiler.test.NewBean", type.getTypeClass().getName());
assertFalse(builder.hasErrors());
InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName());
Class newBean = bp.getPackageClassLoader().loadClass("org.drools.compiler.test.NewBean");
assertNotNull(newBean);
}
use of org.drools.compiler.lang.descr.PatternDescr in project drools by kiegroup.
the class KnowledgeBuilderTest method testDuplicateRuleNames.
@Test
public void testDuplicateRuleNames() throws Exception {
final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl();
RuleDescr ruleDescr;
AndDescr lhs;
PatternDescr patternDescr;
FieldConstraintDescr literalDescr;
final PackageDescr packageDescr = createBasicPackageWithOneRule(1, 1);
ruleDescr = new RuleDescr("rule-1");
ruleDescr.setLocation(42, 43);
packageDescr.addRule(ruleDescr);
lhs = new AndDescr();
ruleDescr.setLhs(lhs);
patternDescr = new PatternDescr(Cheese.class.getName(), "stilton");
literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("!=", null));
patternDescr.addConstraint(literalDescr);
ruleDescr.setConsequence("");
ruleDescr = new RuleDescr("rule-2");
ruleDescr.setLocation(42, 43);
packageDescr.addRule(ruleDescr);
lhs = new AndDescr();
ruleDescr.setLhs(lhs);
patternDescr = new PatternDescr(Cheese.class.getName(), "stilton");
literalDescr = new FieldConstraintDescr("type");
literalDescr.addRestriction(new LiteralRestrictionDescr("!=", null));
patternDescr.addConstraint(literalDescr);
ruleDescr.setConsequence("");
builder.addPackage(packageDescr);
assertLength(2, builder.getErrors().getErrors());
final ParserError err = (ParserError) builder.getErrors().getErrors()[0];
assertEquals(42, err.getRow());
assertEquals(43, err.getCol());
}
Aggregations