use of org.drools.compiler.lang.descr.PackageDescr in project drools by kiegroup.
the class DescrBuilderTest method testRuleRHSOptional.
@Test
public void testRuleRHSOptional() throws InstantiationException, IllegalAccessException {
PackageDescr pkg = DescrFactory.newPackage().name("org.drools.compiler").newRule().name("r1").lhs().pattern("StockTick").constraint("company == \"RHT\"").end().end().end().getDescr();
KiePackage kpkg = compilePkgDescr(pkg);
assertEquals("org.drools.compiler", kpkg.getName());
InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
kbase.addPackages(Collections.singletonList(kpkg));
KieSession ksession = kbase.newKieSession();
ksession.insert(new StockTick(1, "RHT", 80, 1));
int rules = ksession.fireAllRules();
assertEquals(1, rules);
}
use of org.drools.compiler.lang.descr.PackageDescr in project drools by kiegroup.
the class DescrBuilderTest method testPackageAttributes.
@Test
public void testPackageAttributes() {
PackageDescr pkg = DescrFactory.newPackage().name("org.drools").attribute("dialect").value("mvel").end().attribute("salience", "10").attribute("lock-on-active", "true", AttributeDescr.Type.BOOLEAN).getDescr();
assertEquals("org.drools", pkg.getName());
assertEquals(3, pkg.getAttributes().size());
assertEquals("mvel", pkg.getAttribute("dialect").getValue());
assertEquals("10", pkg.getAttribute("salience").getValue());
assertEquals("true", pkg.getAttribute("lock-on-active").getValue());
assertEquals(AttributeDescr.Type.BOOLEAN, pkg.getAttribute("lock-on-active").getType());
assertNull(pkg.getAttribute("no-loop"));
KiePackage kpkg = compilePkgDescr(pkg);
assertEquals("org.drools", kpkg.getName());
}
use of org.drools.compiler.lang.descr.PackageDescr in project drools by kiegroup.
the class DescrBuilderTest method testDumperTimer.
@Test
public void testDumperTimer() {
PackageDescr pkg = DescrFactory.newPackage().name("org.test").newRule().name("org.test").attribute("timer").value("cron:0/5 * * * * ?").end().lhs().end().rhs("").end().end().getDescr();
String drl = new DrlDumper().dump(pkg);
assertTrue(drl.contains("timer (cron:0/5 * * * * ?)"));
}
use of org.drools.compiler.lang.descr.PackageDescr in project drools by kiegroup.
the class RuleParserTest method testFromWithInlineList.
@Test
public void testFromWithInlineList() throws Exception {
String source = "rule XYZ \n" + " when \n" + " o: Order( ) \n" + " not( Number( ) from [1, 2, 3] ) \n" + " then \n" + " System.err.println(\"Invalid customer id found!\"); \n" + " o.addError(\"Invalid customer id\"); \n" + "end \n";
PackageDescr pkg = (PackageDescr) parse("compilationUnit", source);
assertFalse(parser.getErrors().toString(), parser.hasErrors());
RuleDescr rule = (RuleDescr) pkg.getRules().get(0);
assertEquals("XYZ", rule.getName());
PatternDescr number = (PatternDescr) ((NotDescr) rule.getLhs().getDescrs().get(1)).getDescrs().get(0);
assertEquals("[1, 2, 3]", ((FromDescr) number.getSource()).getDataSource().toString());
}
use of org.drools.compiler.lang.descr.PackageDescr in project drools by kiegroup.
the class RuleParserTest method testPluggableOperators.
@Test
public void testPluggableOperators() throws Exception {
final PackageDescr pkg = (PackageDescr) parseResource("compilationUnit", "pluggable_operators.drl");
assertFalse(parser.getErrors().toString(), parser.hasErrors());
assertEquals(1, pkg.getRules().size());
final RuleDescr rule = (RuleDescr) pkg.getRules().get(0);
assertEquals(5, rule.getLhs().getDescrs().size());
final PatternDescr eventA = (PatternDescr) rule.getLhs().getDescrs().get(0);
assertEquals("$a", eventA.getIdentifier());
assertEquals("EventA", eventA.getObjectType());
final PatternDescr eventB = (PatternDescr) rule.getLhs().getDescrs().get(1);
assertEquals("$b", eventB.getIdentifier());
assertEquals("EventB", eventB.getObjectType());
assertEquals(1, eventB.getConstraint().getDescrs().size());
assertEquals(1, eventB.getConstraint().getDescrs().size());
final ExprConstraintDescr fcdB = (ExprConstraintDescr) eventB.getConstraint().getDescrs().get(0);
assertEquals("this after[1,10] $a || this not after[15,20] $a", fcdB.getExpression());
final PatternDescr eventC = (PatternDescr) rule.getLhs().getDescrs().get(2);
assertEquals("$c", eventC.getIdentifier());
assertEquals("EventC", eventC.getObjectType());
assertEquals(1, eventC.getConstraint().getDescrs().size());
final ExprConstraintDescr fcdC = (ExprConstraintDescr) eventC.getConstraint().getDescrs().get(0);
assertEquals("this finishes $b", fcdC.getExpression());
final PatternDescr eventD = (PatternDescr) rule.getLhs().getDescrs().get(3);
assertEquals("$d", eventD.getIdentifier());
assertEquals("EventD", eventD.getObjectType());
assertEquals(1, eventD.getConstraint().getDescrs().size());
final ExprConstraintDescr fcdD = (ExprConstraintDescr) eventD.getConstraint().getDescrs().get(0);
assertEquals("this not starts $a", fcdD.getExpression());
final PatternDescr eventE = (PatternDescr) rule.getLhs().getDescrs().get(4);
assertEquals("$e", eventE.getIdentifier());
assertEquals("EventE", eventE.getObjectType());
assertEquals(1, eventE.getConstraint().getDescrs().size());
ExprConstraintDescr fcdE = (ExprConstraintDescr) eventE.getConstraint().getDescrs().get(0);
assertEquals("this not before[1, 10] $b || after[1, 10] $c && this after[1, 5] $d", fcdE.getExpression());
}
Aggregations