📄 ruleparsertest.java
字号:
assertEquals( 2,
rootAnd.getDescrs().size() );
final OrDescr leftOr = (OrDescr) rootAnd.getDescrs().get( 0 );
assertEquals( 2,
leftOr.getDescrs().size() );
final NotDescr not = (NotDescr) leftOr.getDescrs().get( 0 );
final ColumnDescr foo1 = (ColumnDescr) not.getDescrs().get( 0 );
assertEquals( "Foo",
foo1.getObjectType() );
final ColumnDescr foo2 = (ColumnDescr) leftOr.getDescrs().get( 1 );
assertEquals( "Foo",
foo2.getObjectType() );
final OrDescr rightOr = (OrDescr) rootAnd.getDescrs().get( 1 );
assertEquals( 2,
rightOr.getDescrs().size() );
final ColumnDescr shoes = (ColumnDescr) rightOr.getDescrs().get( 0 );
assertEquals( "Shoes",
shoes.getObjectType() );
final ColumnDescr butt = (ColumnDescr) rightOr.getDescrs().get( 1 );
assertEquals( "Butt",
butt.getObjectType() );
assertFalse( parser.hasErrors() );
}
public void testEvalMultiple() throws Exception {
final RuleParser parser = parseResource( "eval_multiple.drl" );
parser.compilation_unit();
System.err.println( parser.getErrorMessages() );
assertFalse( parser.hasErrors() );
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 4,
rule.getLhs().getDescrs().size() );
final EvalDescr eval = (EvalDescr) rule.getLhs().getDescrs().get( 0 );
assertEqualsIgnoreWhitespace( "abc(\"foo\") + 5",
eval.getText() );
final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 1 );
assertEquals( "Foo",
col.getObjectType() );
}
public void testWithEval() throws Exception {
final RuleParser parser = parseResource( "with_eval.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 3,
rule.getLhs().getDescrs().size() );
ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
assertEquals( "Foo",
col.getObjectType() );
col = (ColumnDescr) rule.getLhs().getDescrs().get( 1 );
assertEquals( "Bar",
col.getObjectType() );
final EvalDescr eval = (EvalDescr) rule.getLhs().getDescrs().get( 2 );
assertEqualsIgnoreWhitespace( "abc(\"foo\")",
eval.getText() );
assertEqualsIgnoreWhitespace( "Kapow",
rule.getConsequence() );
assertFalse( parser.hasErrors() );
}
public void testWithRetval() throws Exception {
final RuleParser parser = parseResource( "with_retval.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 1,
rule.getLhs().getDescrs().size() );
final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
assertEquals( 1,
col.getDescrs().size() );
assertEquals( "Foo",
col.getObjectType() );
final ReturnValueDescr retval = (ReturnValueDescr) col.getDescrs().get( 0 );
assertEquals( "a + b",
retval.getText() );
assertEquals( "name",
retval.getFieldName() );
assertEquals( "==",
retval.getEvaluator() );
assertFalse( parser.hasErrors() );
}
public void testWithPredicate() throws Exception {
final RuleParser parser = parseResource( "with_predicate.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 1,
rule.getLhs().getDescrs().size() );
final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
assertEquals( 1,
col.getDescrs().size() );
final PredicateDescr pred = (PredicateDescr) col.getDescrs().get( 0 );
assertEquals( "age",
pred.getFieldName() );
assertEquals( "$age2",
pred.getDeclaration() );
assertEqualsIgnoreWhitespace( "$age2 == $age1+2",
pred.getText() );
assertFalse( parser.hasErrors() );
}
public void testNotWithConstraint() throws Exception {
final RuleParser parser = parseResource( "not_with_constraint.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 2,
rule.getLhs().getDescrs().size() );
ColumnDescr column = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
final FieldBindingDescr fieldBinding = (FieldBindingDescr) column.getDescrs().get( 0 );
assertEquals( "$likes",
fieldBinding.getIdentifier() );
final NotDescr not = (NotDescr) rule.getLhs().getDescrs().get( 1 );
column = (ColumnDescr) not.getDescrs().get( 0 );
final BoundVariableDescr boundVariable = (BoundVariableDescr) column.getDescrs().get( 0 );
assertEquals( "type",
boundVariable.getFieldName() );
assertEquals( "==",
boundVariable.getEvaluator() );
assertEquals( "$likes",
boundVariable.getIdentifier() );
assertFalse( parser.hasErrors() );
}
public void testGlobal() throws Exception {
final RuleParser parser = parseResource( "globals.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 1,
pack.getRules().size() );
final RuleDescr rule = (RuleDescr) pack.getRules().get( 0 );
assertEquals( 1,
rule.getLhs().getDescrs().size() );
assertEquals( 1,
pack.getImports().size() );
assertEquals( 2,
pack.getGlobals().values().size() );
assertEquals( "java.lang.String",
pack.getGlobals().get( "foo" ) );
assertEquals( "java.lang.Integer",
pack.getGlobals().get( "bar" ) );
assertFalse( parser.hasErrors() );
}
public void testFunctions() throws Exception {
final RuleParser parser = parseResource( "functions.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertEquals( 2,
pack.getRules().size() );
final List functions = pack.getFunctions();
assertEquals( 2,
functions.size() );
FunctionDescr func = (FunctionDescr) functions.get( 0 );
assertEquals( "functionA",
func.getName() );
assertEquals( "String",
func.getReturnType() );
assertEquals( 2,
func.getParameterNames().size() );
assertEquals( 2,
func.getParameterTypes().size() );
assertEquals( "String",
func.getParameterTypes().get( 0 ) );
assertEquals( "s",
func.getParameterNames().get( 0 ) );
assertEquals( "Integer",
func.getParameterTypes().get( 1 ) );
assertEquals( "i",
func.getParameterNames().get( 1 ) );
assertEqualsIgnoreWhitespace( "foo();",
func.getText() );
func = (FunctionDescr) functions.get( 1 );
assertEquals( "functionB",
func.getName() );
assertEqualsIgnoreWhitespace( "bar();",
func.getText() );
assertFalse( parser.hasErrors() );
}
public void testComment() throws Exception {
final RuleParser parser = parseResource( "comment.drl" );
parser.compilation_unit();
final PackageDescr pack = parser.getPackageDescr();
assertNotNull( pack );
assertEquals( "foo.bar",
pack.getName() );
assertFalse( parser.hasErrors() );
}
public void testAttributes() throws Exception {
final RuleDescr rule = parseResource( "rule_attributes.drl" ).rule();
assertEquals( "simple_rule",
rule.getName() );
assertEqualsIgnoreWhitespace( "bar();",
rule.getConsequence() );
final List attrs = rule.getAttributes();
assertEquals( 5,
attrs.size() );
AttributeDescr at = (AttributeDescr) attrs.get( 0 );
assertEquals( "salience",
at.getName() );
assertEquals( "42",
at.getValue() );
at = (AttributeDescr) attrs.get( 1 );
assertEquals( "agenda-group",
at.getName() );
assertEquals( "my_group",
at.getValue() );
at = (AttributeDescr) attrs.get( 2 );
assertEquals( "no-loop",
at.getName() );
assertEquals( "true",
at.getValue() );
at = (AttributeDescr) attrs.get( 3 );
assertEquals( "duration",
at.getName() );
assertEquals( "42",
at.getValue() );
at = (AttributeDescr) attrs.get( 4 );
assertEquals( "activation-group",
at.getName() );
assertEquals( "my_activation_group",
at.getValue() );
assertFalse( this.parser.hasErrors() );
}
public void testAttributes_alternateSyntax() throws Exception {
final RuleDescr rule = parseResource( "rule_attributes_alt.drl" ).rule();
assertEquals( "simple_rule",
rule.getName() );
assertEqualsIgnoreWhitespace( "bar();",
rule.getConsequence() );
final List attrs = rule.getAttributes();
assertEquals( 5,
attrs.size() );
AttributeDescr at = (AttributeDescr) attrs.get( 0 );
assertEquals( "salience",
at.getName() );
assertEquals( "42",
at.getValue() );
at = (AttributeDescr) attrs.get( 1 );
assertEquals( "agenda-group",
at.getName() );
assertEquals( "my_group",
at.getValue() );
at = (AttributeDescr) attrs.get( 2 );
assertEquals( "no-loop",
at.getName() );
assertEquals( "true",
at.getValue() );
at = (AttributeDescr) attrs.get( 3 );
assertEquals( "duration",
at.getName() );
assertEquals( "42",
at.getValue() );
at = (AttributeDescr) attrs.get( 4 );
assertEquals( "activation-group",
at.getName() );
assertEquals( "my_activation_group",
at.getValue() );
assertFalse( this.parser.hasErrors() );
}
public void testEnumeration() throws Exception {
final RuleDescr rule = parseResource( "enumeration.drl" ).rule();
assertEquals( "simple_rule",
rule.getName() );
assertEquals( 1,
rule.getLhs().getDescrs().size() );
final ColumnDescr col = (ColumnDescr) rule.getLhs().getDescrs().get( 0 );
assertEquals( "Foo",
col.getObjectType() );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -