@Test public void testAccumulateExternalFunction() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulateExternalFunction.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 accum = (AccumulateDescr) out.getSource(); assertEqualsIgnoreWhitespace( "$age", accum.getFunctions().get( 0 ).getParams()[0] ); assertEqualsIgnoreWhitespace( "average", accum.getFunctions().get( 0 ).getFunction() ); assertTrue( accum.isExternalFunction() ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Person", pattern.getObjectType() ); }
@Test public void testAccumulateMultiPattern() throws Exception { final XmlPackageReader xmlPackageReader = getXmReader(); xmlPackageReader.read( new InputStreamReader( getClass().getResourceAsStream( "test_ParseAccumulate.xml" ) ) ); final PackageDescr packageDescr = xmlPackageReader.getPackageDescr(); assertNotNull( packageDescr ); RuleDescr obj = (RuleDescr) packageDescr.getRules().get( 1 ); Object patternobj = obj.getLhs().getDescrs().get( 0 ); assertTrue( patternobj instanceof PatternDescr ); final PatternDescr patterncheese = (PatternDescr) patternobj; assertEquals( patterncheese.getIdentifier(), "cheese" ); assertEquals( patterncheese.getObjectType(), "Cheese" ); AccumulateDescr accumulatedescr = (AccumulateDescr) patterncheese.getSource(); assertEquals( "total += $cheese.getPrice();", accumulatedescr.getActionCode() ); assertEquals( "int total = 0;", accumulatedescr.getInitCode() ); assertEquals( "new Integer( total ) );", accumulatedescr.getResultCode() ); AndDescr anddescr = (AndDescr) accumulatedescr.getInput(); List descrlist = anddescr.getDescrs(); PatternDescr[] listpattern = (PatternDescr[]) descrlist.toArray( new PatternDescr[descrlist.size()] ); assertEquals( listpattern[0].getObjectType(), "Milk" ); assertEquals( listpattern[1].getObjectType(), "Cup" ); }
accumulatedescr.getActionCode() ); assertEquals( "int total = 0;", accumulatedescr.getInitCode() ); assertEquals( "new Integer( total ) );", accumulatedescr.getResultCode() ); assertTrue( accumulatedescr.isExternalFunction() ); accumulatedescr.getFunctions().get( 0 ).getFunction() ); assertNull( accumulatedescr.getInitCode() ); assertNull( accumulatedescr.getActionCode() ); assertNull( accumulatedescr.getResultCode() ); assertNull( accumulatedescr.getReverseCode() );
protected void visit( final AccumulateDescr descr ) { checkResource(descr); visit(descr.getInputPattern()); for( BaseDescr d : descr.getDescrs() ) { visit(d); } }
@Test public void testAccumulateReverse() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulateReverse.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 accum = (AccumulateDescr) out.getSource(); assertEqualsIgnoreWhitespace( "int x = 0 ;", accum.getInitCode() ); assertEqualsIgnoreWhitespace( "x++;", accum.getActionCode() ); assertEqualsIgnoreWhitespace( "x--;", accum.getReverseCode() ); assertEqualsIgnoreWhitespace( "new Integer(x)", accum.getResultCode() ); assertFalse( accum.isExternalFunction() ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Person", pattern.getObjectType() ); }
FromAccumulateCompositeFactPattern fac = new FromAccumulateCompositeFactPattern(); fac.setSourcePattern(parseBaseDescr(m, accumulate.getInput(), isJavaDialect, boundParams, dmo)); fac.setInitCode(accumulate.getInitCode()); fac.setActionCode(accumulate.getActionCode()); fac.setReverseCode(accumulate.getReverseCode()); fac.setResultCode(accumulate.getResultCode()); for (AccumulateDescr.AccumulateFunctionCallDescr func : accumulate.getFunctions()) { String funcName = func.getFunction(); boolean first = true;
@Test public void testAccumulateWithBindings() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulate_with_bindings.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, rule.getLhs().getDescrs().size() ); final PatternDescr outPattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); final AccumulateDescr accum = (AccumulateDescr) outPattern.getSource(); assertEqualsIgnoreWhitespace( "$counter", outPattern.getIdentifier() ); assertEqualsIgnoreWhitespace( "int x = 0 ;", accum.getInitCode() ); assertEqualsIgnoreWhitespace( "x++;", accum.getActionCode() ); assertEqualsIgnoreWhitespace( "new Integer(x)", accum.getResultCode() ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Person", pattern.getObjectType() ); }
AccumulateDescr accumulate = (AccumulateDescr) patternSource; FromAccumulateCompositeFactPattern fac = new FromAccumulateCompositeFactPattern(); fac.setSourcePattern( parseBaseDescr( accumulate.getInput(), boundParams ) ); fac.setFactPattern( new FactPattern( pattern.getObjectType() ) ); for ( AccumulateDescr.AccumulateFunctionCallDescr func : accumulate.getFunctions() ) { String funcName = func.getFunction(); boolean first = true;
protected void visit(final AccumulateDescr descr) { visit(descr.getInputPattern()); for (AccumulateFunctionCallDescr accFuncCallDescr : descr.getFunctions()) { visit(accFuncCallDescr); } }
@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() ); }
@Test public void testAccumulate() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulate.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, rule.getLhs().getDescrs().size() ); final PatternDescr outPattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); final AccumulateDescr accum = (AccumulateDescr) outPattern.getSource(); assertEqualsIgnoreWhitespace( "int x = 0 ;", accum.getInitCode() ); assertEqualsIgnoreWhitespace( "x++;", accum.getActionCode() ); assertNull( accum.getReverseCode() ); assertEqualsIgnoreWhitespace( "new Integer(x)", accum.getResultCode() ); assertFalse( accum.isExternalFunction() ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Person", pattern.getObjectType() ); }
out.getObjectType() ); AccumulateDescr accum = (AccumulateDescr) out.getSource(); assertTrue( accum.isExternalFunction() ); List<AccumulateFunctionCallDescr> functions = accum.getFunctions(); assertEquals( 1, functions.size() ); functions.get( 0 ).getParams()[0] ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Cheese", pattern.getObjectType() );
@Test public void testAccumulateMultiPattern() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "accumulate_multi_pattern.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, rule.getLhs().getDescrs().size() ); final PatternDescr outPattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); final AccumulateDescr accum = (AccumulateDescr) outPattern.getSource(); assertEqualsIgnoreWhitespace( "$counter", outPattern.getIdentifier() ); assertEqualsIgnoreWhitespace( "int x = 0 ;", accum.getInitCode() ); assertEqualsIgnoreWhitespace( "x++;", accum.getActionCode() ); assertEqualsIgnoreWhitespace( "new Integer(x)", accum.getResultCode() ); final AndDescr and = (AndDescr) accum.getInput(); assertEquals( 2, and.getDescrs().size() ); final PatternDescr person = (PatternDescr) and.getDescrs().get( 0 ); final PatternDescr cheese = (PatternDescr) and.getDescrs().get( 1 ); assertEquals( "Person", person.getObjectType() ); assertEquals( "Cheese", cheese.getObjectType() ); }
out.getObjectType() ); AccumulateDescr accum = (AccumulateDescr) out.getSource(); assertTrue( accum.isExternalFunction() ); List<AccumulateFunctionCallDescr> functions = accum.getFunctions(); assertEquals( 1, functions.size() ); functions.get( 0 ).getParams()[0] ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Cheese", pattern.getObjectType() );
out.getObjectType() ); AccumulateDescr accum = (AccumulateDescr) out.getSource(); assertTrue( accum.isExternalFunction() ); List<AccumulateFunctionCallDescr> functions = accum.getFunctions(); assertEquals( 3, functions.size() ); functions.get( 2 ).getParams()[0] ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Cheese", pattern.getObjectType() );
out.getConstraint().getDescrs().get( 1 ).toString() ); AccumulateDescr accum = (AccumulateDescr) out.getSource(); assertTrue( accum.isExternalFunction() ); List<AccumulateFunctionCallDescr> functions = accum.getFunctions(); assertEquals( 3, functions.size() ); functions.get( 2 ).getParams()[0] ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Cheese", pattern.getObjectType() );
out.getObjectType() ); AccumulateDescr accum = (AccumulateDescr) out.getSource(); assertTrue( accum.isExternalFunction() ); List<AccumulateFunctionCallDescr> functions = accum.getFunctions(); assertEquals( 2, functions.size() ); functions.get( 1 ).getParams()[0] ); final PatternDescr pattern = (PatternDescr) accum.getInputPattern(); assertEquals( "Cheese", pattern.getObjectType() );