@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 testLineNumberIncludingCommentsInRHS() throws Exception { PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "test_CommentLineNumbersInConsequence.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); final String rhs = (String) ((RuleDescr) pkg.getRules().get( 0 )).getConsequence(); String expected = "\\s*//woot$\\s*first$\\s*$\\s*//$\\s*$\\s*/\\* lala$\\s*$\\s*\\*/$\\s*second$\\s*"; assertTrue( Pattern.compile( expected, Pattern.DOTALL | Pattern.MULTILINE ).matcher( rhs ).matches() ); }
private RuleDescr parseDrl( ExpandedDRLInfo expandedDRLInfo ) { DrlParser drlParser = new DrlParser(); PackageDescr packageDescr = null; try { packageDescr = drlParser.parse( true, expandedDRLInfo.plainDrl ); } catch ( DroolsParserException e ) { throw new RuntimeException( e ); } expandedDRLInfo.registerGlobalDescrs( packageDescr.getGlobals() ); return packageDescr.getRules().get( 0 ); }
@Test public void testEval() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "eval_parsing.drl" ); assertEquals( "org.drools.compiler", pkg.getName() ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule1 = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, rule1.getLhs().getDescrs().size() ); }
@Test public void testIncompleteCode3() throws DroolsParserException, RecognitionException { String input = "rule MyRule when Class ( property > somevalue ) then end query MyQuery Class ( property == collection ) end "; DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr descr = parser.parse(true, input); assertNotNull(descr); assertEquals("MyRule", descr.getRules().get(0).getName()); assertNotNull(descr); assertEquals("MyQuery", descr.getRules().get(1).getName()); assertEquals(Location.LOCATION_RHS, getLastIntegerValue(parser .getEditorSentences().get(0).getContent())); }
private RuleDescr parseDrl(final ExpandedDRLInfo expandedDRLInfo) { DrlParser drlParser = new DrlParser(); PackageDescr packageDescr; try { packageDescr = drlParser.parse(true, expandedDRLInfo.plainDrl); if (drlParser.hasErrors()) { throw new RuleModelUnmarshallingException(); } } catch (DroolsParserException e) { throw new RuntimeException(e); } expandedDRLInfo.registerGlobalDescrs(packageDescr.getGlobals()); return packageDescr.getRules().get(0); }
@Test public void testQualifiedClassname() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "qualified_classname.drl" ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); final PatternDescr p = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); assertEquals( "com.cheeseco.Cheese", p.getObjectType() ); }
@Test public void testIncompleteCode4() throws DroolsParserException, RecognitionException { String input = "package a.b.c import a.b.c.*" + " rule MyRule when Class ( property == collection ) then end " + " query MyQuery Class ( property == collection ) end "; DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr descr = parser.parse(true, input); assertEquals("a.b.c", descr.getNamespace()); assertEquals("a.b.c.*", descr.getImports().get(0) .getTarget()); assertNotNull(descr); assertEquals("MyRule", descr.getRules().get(0).getName()); assertNotNull(descr); assertEquals("MyQuery", descr.getRules().get(1).getName()); }
@Test public void testRuleNamesStartingWithNumbers() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "rule_names_number_prefix.drl" ); assertEquals( 2, pkg.getRules().size() ); assertEquals( "1. Do Stuff!", ((RuleDescr) pkg.getRules().get( 0 )).getName() ); assertEquals( "2. Do More Stuff!", ((RuleDescr) pkg.getRules().get( 1 )).getName() ); }
@Test public void testAttributeRefract() throws Exception { final String source = "rule Test refract when Person() 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() ); Map<String, AttributeDescr> attributes = rule.getAttributes(); assertEquals( 1, attributes.size() ); AttributeDescr refract = attributes.get( "refract" ); assertNotNull( refract ); assertEquals( "true", refract.getValue() ); }
@Test public void testEvalMultiple() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "eval_multiple.drl" ); assertEquals( 1, pkg.getRules().size() ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 4, rule.getLhs().getDescrs().size() ); final EvalDescr eval = (EvalDescr) rule.getLhs().getDescrs().get( 0 ); assertEqualsIgnoreWhitespace( "abc(\"foo\") + 5", (String) eval.getContent() ); final PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 1 ); assertEquals( "Foo", pattern.getObjectType() ); }
@Test public void testIncompleteCode11() throws DroolsParserException, RecognitionException { String input = "package a.b.c import a.b.c.*" + " rule MyRule when Class ( property memberOf collection ) then end " + " qzzzzuery MyQuery Class ( property "; DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr descr = parser.parse(true, input); assertEquals("a.b.c", descr.getNamespace()); assertEquals("a.b.c.*", descr.getImports().get(0) .getTarget()); assertNotNull(descr); assertEquals("MyRule", descr.getRules().get(0).getName()); }
@Test public void testTernaryExpression() throws Exception { PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "ternary_expression.drl" ); final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( 1, pkg.getRules().size() ); assertEqualsIgnoreWhitespace( "if (speed > speedLimit ? true : false;) pullEmOver();", (String) rule.getConsequence() ); }
@Test public void testDebug() throws Exception { String rule = "package com.sample; dialect \"mvel\" rule myRule when then\n System.out.println( \"test\" ); end"; KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr packageDescr = parser.parse(null, rule); RuleDescr ruleDescr = packageDescr.getRules().get(0); builder = new KnowledgeBuilderImpl( ); builder.addPackage(packageDescr); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence(); String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName(); System.out.println(sourceName); String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName(); System.out.println(ruleName); assertEquals(sourceName, ruleName); }
@Test public void testCollect() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "collect.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 CollectDescr collect = (CollectDescr) outPattern.getSource(); final PatternDescr pattern = (PatternDescr) collect.getInputPattern(); assertEquals( "Person", pattern.getObjectType() ); }
@Test public void testRuleMetadata() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "Rule_with_Metadata.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); // @fooAttribute(barValue) // @fooAtt2(barVal2) RuleDescr rule = pkg.getRules().get( 0 ); assertTrue( rule.getAnnotationNames().contains( "fooMeta1" ) ); assertEquals( "barVal1", rule.getAnnotation( "fooMeta1" ).getValue() ); assertTrue( rule.getAnnotationNames().contains( "fooMeta2" ) ); assertEquals( "barVal2", rule.getAnnotation( "fooMeta2" ).getValue() ); assertEqualsIgnoreWhitespace( "System.out.println(\"Consequence\");", (String) rule.getConsequence() ); }