Refine search
@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 testRuleSingleLine() throws Exception { final String text = "rule \"another test\" salience 10 when eval( true ) then System.out.println(1); end"; RuleDescr rule = (RuleDescr) parse( "rule", text ); assertEquals( "another test", rule.getName() ); assertEquals( "System.out.println(1); ", rule.getConsequence() ); }
@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())); }
@Test public void testRuleTwoLines() throws Exception { final String text = "rule \"another test\" salience 10 when eval( true ) then System.out.println(1);\n end"; RuleDescr rule = (RuleDescr) parse( "rule", text ); assertEquals( "another test", rule.getName() ); assertEquals( "System.out.println(1);\n ", rule.getConsequence() ); }
@Test public void testQueryRuleMixed() throws Exception { final PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "query_and_rule.drl" ); assertEquals( 4, pkg.getRules().size() ); // as queries are rules RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( "bar", rule.getName() ); QueryDescr query = (QueryDescr) pkg.getRules().get( 1 ); assertEquals( "simple_query", query.getName() ); rule = (RuleDescr) pkg.getRules().get( 2 ); assertEquals( "bar2", rule.getName() ); query = (QueryDescr) pkg.getRules().get( 3 ); assertEquals( "simple_query2", query.getName() ); }
@Test public void testEscapedStrings() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "escaped-string.drl" ); assertNotNull( rule ); assertEquals( "test_Quotes", rule.getName() ); final String expected = "String s = \"\\\"\\n\\t\\\\\";"; assertEqualsIgnoreWhitespace( expected, (String) rule.getConsequence() ); }
@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 testFrom() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "from.drl" ); assertFalse( parser.getErrorMessages().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "using_from", rule.getName() ); assertEquals( 9, rule.getLhs().getDescrs().size() ); }
@Test public void testCompatibleRestriction() throws Exception { String source = "package com.sample rule test when Test( ( text == null || text2 matches \"\" ) ) then end"; PackageDescr pkg = (PackageDescr) parse( "compilationUnit", source ); assertEquals( "com.sample", pkg.getName() ); RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( "test", rule.getName() ); ExprConstraintDescr expr = (ExprConstraintDescr) ((PatternDescr) rule.getLhs().getDescrs().get( 0 )).getDescrs().get( 0 ); assertEquals( "( text == null || text2 matches \"\" )", expr.getText() ); }
@Test public void testQuotedStringNameRule() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "quoted_string_name_rule.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "quoted string name", rule.getName() ); assertNotNull( rule.getLhs() ); assertEquals( "", ((String) rule.getConsequence()).trim() ); }
@Test public void testAlmostEmptyRule() throws Exception { PackageDescr pkg = (PackageDescr) parseResource( "compilationUnit", "almost_empty_rule.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( pkg ); RuleDescr rule = pkg.getRules().get( 0 ); assertEquals( "almost_empty", rule.getName() ); assertNotNull( rule.getLhs() ); assertEquals( "", ((String) rule.getConsequence()).trim() ); }
@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 testRuleFlowGroup() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "ruleflowgroup.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "rule1", rule.getName() ); final AttributeDescr att = (AttributeDescr) rule.getAttributes().get( "ruleflow-group" ); assertEquals( "a group", att.getValue() ); assertEquals( "ruleflow-group", att.getName() ); }
@Test public void testStringEscapes() throws Exception { String source = "package com.sample rule test when Cheese( type matches \"\\..*\\\\.\" ) then end"; PackageDescr pkg = (PackageDescr) parse( "compilationUnit", source ); assertEquals( "com.sample", pkg.getName() ); RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 ); assertEquals( "test", rule.getName() ); assertEquals( 1, rule.getLhs().getDescrs().size() ); PatternDescr pattern = (PatternDescr) rule.getLhs().getDescrs().get( 0 ); AndDescr constraint = (AndDescr) pattern.getConstraint(); assertEquals( 1, constraint.getDescrs().size() ); assertEquals( "type matches \"\\..*\\\\.\"", constraint.getDescrs().get( 0 ).toString() ); }
@Test public void testNoLoop() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "no-loop.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "rule1", rule.getName() ); final AttributeDescr att = (AttributeDescr) rule.getAttributes().get( "no-loop" ); assertEquals( "false", att.getValue() ); assertEquals( "no-loop", att.getName() ); }
@Test @Ignore public void testIncompleteCode9() throws DroolsParserException, RecognitionException { String input = "package a.b.c import a.b.c.*" + " rule MyRule xxxxx Class ( property memberOf collection ) then end " + " query MyQuery Class ( property memberOf 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()); assertEquals(1, descr.getRules().size()); assertEquals("MyQuery", descr.getRules().get(0).getName()); }
@Test public void testAutofocus() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "autofocus.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "rule1", rule.getName() ); final AttributeDescr att = (AttributeDescr) rule.getAttributes().get( "auto-focus" ); assertEquals( "true", att.getValue() ); assertEquals( "auto-focus", att.getName() ); }
@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 testConsequenceWithDeclaration() throws Exception { final RuleDescr rule = (RuleDescr) parseResource( "rule", "declaration-in-consequence.drl" ); assertFalse( parser.getErrors().toString(), parser.hasErrors() ); assertNotNull( rule ); assertEquals( "myrule", rule.getName() ); final String expected = "int i = 0; i = 1; i / 1; i == 1; i(i); i = 'i'; i.i.i; i\\i; i<i; i>i; i=\"i\"; ++i;" + "i++; --i; i--; i += i; i -= i; i *= i; i /= i;" + "int i = 5;" + "for(int j; j<i; ++j) {" + "System.out.println(j);}" + "Object o = new String(\"Hello\");" + "String s = (String) o;"; assertEqualsIgnoreWhitespace( expected, (String) rule.getConsequence() ); assertTrue( ((String) rule.getConsequence()).indexOf( "++" ) > 0 ); assertTrue( ((String) rule.getConsequence()).indexOf( "--" ) > 0 ); assertTrue( ((String) rule.getConsequence()).indexOf( "+=" ) > 0 ); assertTrue( ((String) rule.getConsequence()).indexOf( "==" ) > 0 ); // System.out.println(( String ) rule.getConsequence()); // note, need to assert that "i++" is preserved as is, no extra spaces. }