eventA.getIdentifier() ); assertEquals( "EventA", eventA.getObjectType() ); 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() ); 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() ); eventD.getIdentifier() ); assertEquals( "EventD", eventD.getObjectType() ); assertEquals( 1,
@Test public void testParseFrom() throws Exception { final XmlPackageReader xmlPackageReader = getXmReader(); xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseFrom.xml" ) ) ); final PackageDescr packageDescr = xmlPackageReader.getPackageDescr(); assertNotNull( packageDescr ); RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 ); PatternDescr patterndescr = (PatternDescr) obj.getLhs().getDescrs().get( 0 ); FromDescr from = (FromDescr) patterndescr.getSource(); MVELExprDescr accessordescriptor = (MVELExprDescr) from.getDataSource(); assertEquals( "cheesery.getCheeses(i+4)", accessordescriptor.getExpression() ); assertEquals( patterndescr.getObjectType(), "Cheese" ); assertEquals( patterndescr.getIdentifier(), "cheese" ); }
private void createReturnValueRule( final PackageDescr packageDescr, final String expression ) { 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 == (" + expression + ")") ); ruleDescr.setConsequence( "update(stilton);" ); }
protected void visit( final PatternDescr descr ) { checkResource(descr); visit(descr.getConstraint()); for( BaseDescr behaDescr : descr.getBehaviors() ) { visit(behaDescr); } }
@Test public void testCheckOrDescr() throws Exception { final String text = "rule X when Person( eval( age == 25 ) || ( eval( name.equals( \"bob\" ) ) && eval( age == 30 ) ) ) then end"; PatternDescr pattern = (PatternDescr) ((RuleDescr) parse( "rule", text )).getLhs().getDescrs().get( 0 ); assertEquals( 1, pattern.getDescrs().size() ); assertEquals( pattern.getConstraint().getClass(), AndDescr.class ); assertEquals( ExprConstraintDescr.class, pattern.getConstraint().getDescrs().get( 0 ).getClass() ); }
@Test public void testUnificationBinding() throws Exception { final String text = "rule X when $p := Person( $name := name, $loc : location ) then end"; PatternDescr pattern = (PatternDescr) ((RuleDescr) parse( "rule", text )).getLhs().getDescrs().get( 0 ); assertEquals( "$p", pattern.getIdentifier() ); assertTrue( pattern.isUnification() ); assertEquals( 2, pattern.getDescrs().size() ); ExprConstraintDescr bindingDescr = (ExprConstraintDescr) pattern.getDescrs().get( 0 ); assertEquals( "$name := name", bindingDescr.getExpression() ); bindingDescr = (ExprConstraintDescr) pattern.getDescrs().get( 1 ); assertEquals( "$loc : location", bindingDescr.getExpression() ); }
@Test public void testInlineEval() throws Exception { final String text = "rule \"inline eval\"\n" + "when\n" + " Person( eval( name.startsWith(\"b\") && name.finishesWith(\"b\")) )\n" + "then\n" + "end"; PatternDescr pattern = (PatternDescr) ((RuleDescr) parse( "rule", text )).getLhs().getDescrs().get( 0 ); assertEquals( "Person", pattern.getObjectType() ); ExprConstraintDescr constr = (ExprConstraintDescr) pattern.getConstraint().getDescrs().get( 0 ); assertEquals( "eval( name.startsWith(\"b\") && name.finishesWith(\"b\"))", constr.getText() ); }
@Test public void testAccumulateWithNestedFrom() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulate_with_nested_from.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, rule.getLhs().getDescrs().size() ); final PatternDescr out = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); final AccumulateDescr accumulate = (AccumulateDescr) out.getSource(); PatternDescr person = (PatternDescr) accumulate.getInputPattern(); assertEquals( "Person", person.getObjectType() ); final CollectDescr collect2 = (CollectDescr) person.getSource(); final PatternDescr people = collect2.getInputPattern(); assertEquals( "People", people.getObjectType() ); }
first.getIdentifier() ); assertEquals( "Bar", first.getObjectType() ); first.getConstraint().getDescrs().size() ); AndDescr and = (AndDescr) first.getConstraint(); ExprConstraintDescr fld = (ExprConstraintDescr) and.getDescrs().get( 0 ); assertNotNull( fld ); second.getIdentifier() ); assertEquals( "Bar", second.getObjectType() ); second.getDescrs().size() ); final ExprConstraintDescr bindingDescr = (ExprConstraintDescr) second.getDescrs().get( 0 ); assertEquals( "a4:a==4", bindingDescr.getExpression() );
@Test public void testOrCE() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "or_ce.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 2, rule.getLhs().getDescrs().size() ); final PatternDescr person = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "Person", person.getObjectType() ); assertEquals( "$p", person.getIdentifier() ); final OrDescr or = (OrDescr) rule.getLhs().getDescrs().get( 1 ); assertEquals( 2, or.getDescrs().size() ); final PatternDescr cheese1 = (PatternDescr) or.getDescrs().get( 0 ); assertEquals( "Cheese", cheese1.getObjectType() ); assertEquals( "$c", cheese1.getIdentifier() ); final PatternDescr cheese2 = (PatternDescr) or.getDescrs().get( 1 ); assertEquals( "Cheese", cheese2.getObjectType() ); assertNull( cheese2.getIdentifier() ); }
first.getIdentifier() ); assertEquals( "Bar", first.getObjectType() ); assertEquals( 1, first.getConstraint().getDescrs().size() ); second.getIdentifier() ); assertEquals( "Bar", second.getObjectType() ); third.getObjectType() ); first.getLine() ); assertEquals( 20, second.getLine() ); assertEquals( 21, third.getLine() );
assertNotNull( pd ); assertEquals( "$s", pd.getIdentifier() ); assertEquals( "StockTick", pd.getObjectType() ); assertEquals( "stStream", pd.getSource().getText() ); pd.getBehaviors().size() ); BehaviorDescr bd = pd.getBehaviors().get( 0 ); assertEquals( "window", bd.getType() );
final Map<String, String> boundParams, final PackageDataModelOracle dmo) { String type = pattern.getObjectType(); FactPattern factPattern = new FactPattern(getSimpleFactType(type, dmo)); if (pattern.getIdentifier() != null) { String identifier = pattern.getIdentifier(); factPattern.setBoundName(identifier); boundParams.put(identifier, pattern.getConstraint(), isJavaDialect, boundParams, dmo); for (BehaviorDescr behavior : pattern.getBehaviors()) { if (behavior.getText().equals("window")) { CEPWindow window = new CEPWindow();
@Test public void testParseForall() throws Exception { final XmlPackageReader xmlPackageReader = getXmReader(); xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseForall.xml" ) ) ); final PackageDescr packageDescr = xmlPackageReader.getPackageDescr(); assertNotNull( packageDescr ); RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 0 ); ForallDescr forall = (ForallDescr) obj.getLhs().getDescrs().get( 0 ); List forallPaterns = forall.getDescrs(); PatternDescr pattarnState = (PatternDescr) forallPaterns.get( 0 ); PatternDescr personState = (PatternDescr) forallPaterns.get( 1 ); PatternDescr cheeseState = (PatternDescr) forallPaterns.get( 2 ); assertEquals( pattarnState.getObjectType(), "State" ); assertEquals( personState.getObjectType(), "Person" ); assertEquals( cheeseState.getObjectType(), "Cheese" ); }
@Test public void testFromWithTernaryFollowedByQuery() throws Exception { // the 'from' expression requires a ";" to disambiguate the "?" // prefix for queries from the ternary operator "? :" final String text = "rule X when Cheese() from (isFull ? $cheesery : $market) ?person( \"Mark\", 42; ) then end"; RuleDescr rule = (RuleDescr) parse( "rule", text ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "Cheese", pattern.getObjectType() ); assertEquals( "from (isFull ? $cheesery : $market)", pattern.getSource().getText() ); assertFalse( pattern.isQuery() ); pattern = (PatternDescr) rule.getLhs().getDescrs().get( 1 ); assertEquals( "person", pattern.getObjectType() ); assertTrue( pattern.isQuery() ); }
@Test public void testBasicBinding() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "basic_binding.drl" ); final RuleDescr ruleDescr = (RuleDescr) pkg.getRules().get( 0 ); final AndDescr lhs = ruleDescr.getLhs(); assertEquals( 1, lhs.getDescrs().size() ); final PatternDescr cheese = (PatternDescr) lhs.getDescrs().get( 0 ); assertEquals( "Cheese", cheese.getObjectType() ); assertEquals( 1, cheese.getConstraint().getDescrs().size() ); final ExprConstraintDescr fieldBinding = (ExprConstraintDescr) cheese.getDescrs().get( 0 ); assertEquals( "$type:type", fieldBinding.getExpression() ); }
@Test public void testSoundsLike() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "soundslike_operator.drl" ); RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); PatternDescr pat = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); pat.getConstraint(); }
@Test public void testSimpleMethodCallWithFrom() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "test_SimpleMethodCallWithFrom.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); final PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); final FromDescr from = (FromDescr) pattern.getSource(); final MVELExprDescr method = (MVELExprDescr) from.getDataSource(); assertEquals( "something.doIt( foo,bar,42,\"hello\",[ a : \"b\", \"something\" : 42, \"a\" : foo, x : [x:y]],\"end\", [a, \"b\", 42] )", method.getExpression() ); }
@Test public void testRuleOldSyntax2() throws Exception { final String source = "rule \"Test\" when ( $r :LiteralRestriction( operator == Operator.EQUAL ) ) then end"; PackageDescr pkg = (PackageDescr) parse( "compilationUnit", source ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( "Test", rule.getName() ); assertEquals( 1, rule.getLhs().getDescrs().size() ); PatternDescr patternDescr = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "$r", patternDescr.getIdentifier() ); assertEquals( 1, patternDescr.getDescrs().size() ); ExprConstraintDescr fieldConstraintDescr = (ExprConstraintDescr) patternDescr.getDescrs().get( 0 ); assertEquals( "operator == Operator.EQUAL", fieldConstraintDescr.getExpression() ); }
PatternDescr patternEntry1=new PatternDescr(); patternEntry1.setIdentifier("$p"); patternEntry1.setObjectType("Purchase"); patternEntry1.addConstraint(red1); patternEntry1.addConstraint(red2); lhs.addDescr(patternEntry1); PatternDescr pattDescr1=new PatternDescr(); pattDescr1.setObjectType("PotentialCustomer"); ecd12.setExpression("$p.getCustomerName()"); RelationalExprDescr red11=new RelationalExprDescr("==",false, null, ecd11,ecd12); pattDescr1.addConstraint(red11); notDescr.addDescr(pattDescr1); lhs.addDescr(notDescr);