📄 ruleparsertest.java
字号:
assertEqualsIgnoreWhitespace( "%*9dkj",
chunk );
assertFalse( this.parser.hasErrors() );
}
public void testEmptyColumn() throws Exception {
parseResource( "test_EmptyColumn.drl" );
this.parser.compilation_unit();
final PackageDescr packageDescr = this.parser.getPackageDescr();
assertEquals( 1,
packageDescr.getRules().size() );
final RuleDescr ruleDescr = (RuleDescr) packageDescr.getRules().get( 0 );
assertEquals( "simple rule",
ruleDescr.getName() );
assertNotNull( ruleDescr.getLhs() );
assertEquals( 1,
ruleDescr.getLhs().getDescrs().size() );
final ColumnDescr columnDescr = (ColumnDescr) ruleDescr.getLhs().getDescrs().get( 0 );
assertEquals( 0,
columnDescr.getDescrs().size() ); //this may be null, not sure as the test doesn't get this far...
assertEquals( "Cheese",
columnDescr.getObjectType() );
}
public void testSimpleRule() throws Exception {
final RuleDescr rule = parseResource( "simple_rule.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
assertEquals( 7,
rule.getConsequenceLine() );
assertEquals( 2,
rule.getConsequenceColumn() );
final AndDescr lhs = rule.getLhs();
assertNotNull( lhs );
assertEquals( 3,
lhs.getDescrs().size() );
//System.err.println( lhs.getDescrs() );
// Check first column
final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
assertEquals( "foo3",
first.getIdentifier() );
assertEquals( "Bar",
first.getObjectType() );
assertEquals( 1,
first.getDescrs().size() );
LiteralDescr constraint = (LiteralDescr) first.getDescrs().get( 0 );
assertNotNull( constraint );
assertEquals( "a",
constraint.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "3",
constraint.getText() );
// Check second column
final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
assertEquals( "foo4",
second.getIdentifier() );
assertEquals( "Bar",
second.getObjectType() );
assertEquals( 2,
second.getDescrs().size() );
//System.err.println( second.getDescrs() );
final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) second.getDescrs().get( 0 );
assertEquals( "a",
fieldBindingDescr.getFieldName() );
assertEquals( "a4",
fieldBindingDescr.getIdentifier() );
constraint = (LiteralDescr) second.getDescrs().get( 1 );
assertNotNull( constraint );
assertEquals( "a",
constraint.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "4",
constraint.getText() );
// Check third column
final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
assertNull( third.getIdentifier() );
assertEquals( "Baz",
third.getObjectType() );
assertEqualsIgnoreWhitespace( "if ( a == b ) { " + " assert( foo3 );" + "} else {" + " retract( foo4 );" + "}" + " System.out.println( a4 );",
rule.getConsequence() );
assertFalse( this.parser.hasErrors() );
}
public void testLineNumberInAST() throws Exception {
//also see testSimpleExpander to see how this works with an expander (should be the same).
final RuleDescr rule = parseResource( "simple_rule.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
assertEquals( 7,
rule.getConsequenceLine() );
assertEquals( 2,
rule.getConsequenceColumn() );
final AndDescr lhs = rule.getLhs();
assertNotNull( lhs );
assertEquals( 3,
lhs.getDescrs().size() );
// Check first column
final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
assertEquals( "foo3",
first.getIdentifier() );
assertEquals( "Bar",
first.getObjectType() );
assertEquals( 1,
first.getDescrs().size() );
// Check second column
final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
assertEquals( "foo4",
second.getIdentifier() );
assertEquals( "Bar",
second.getObjectType() );
final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
assertEquals( "Baz",
third.getObjectType() );
assertEquals( 4,
first.getLine() );
assertEquals( 5,
second.getLine() );
assertEquals( 6,
third.getLine() );
assertFalse( this.parser.hasErrors() );
}
public void testMultiBindings() throws Exception {
final RuleDescr rule = parseResource( "multiple_bindings.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
assertEquals( 2,
rule.getLhs().getDescrs().size() );
assertEquals( "foo",
((ColumnDescr) rule.getLhs().getDescrs().get( 0 )).getIdentifier() );
assertEquals( "baz",
((ColumnDescr) rule.getLhs().getDescrs().get( 1 )).getIdentifier() );
}
public void testMultiBindingsMore() throws Exception {
final RuleDescr rule = parseResource( "multiple_bindings_more.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
assertEquals( 3,
rule.getLhs().getDescrs().size() );
assertEquals( "foo",
((ColumnDescr) rule.getLhs().getDescrs().get( 0 )).getIdentifier() );
assertEquals( "something foo",
((EvalDescr) rule.getLhs().getDescrs().get( 1 )).getText() );
assertEquals( "another foo",
((EvalDescr) rule.getLhs().getDescrs().get( 2 )).getText() );
}
public void testLhsSemicolonDelim() throws Exception {
final RuleDescr rule = parseResource( "lhs_semicolon_delim.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
final AndDescr lhs = rule.getLhs();
assertNotNull( lhs );
assertEquals( 3,
lhs.getDescrs().size() );
//System.err.println( lhs.getDescrs() );
// Check first column
final ColumnDescr first = (ColumnDescr) lhs.getDescrs().get( 0 );
assertEquals( "foo3",
first.getIdentifier() );
assertEquals( "Bar",
first.getObjectType() );
assertEquals( 1,
first.getDescrs().size() );
LiteralDescr constraint = (LiteralDescr) first.getDescrs().get( 0 );
assertNotNull( constraint );
assertEquals( "a",
constraint.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "3",
constraint.getText() );
// Check second column
final ColumnDescr second = (ColumnDescr) lhs.getDescrs().get( 1 );
assertEquals( "foo4",
second.getIdentifier() );
assertEquals( "Bar",
second.getObjectType() );
assertEquals( 2,
second.getDescrs().size() );
//System.err.println( second.getDescrs() );
final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) second.getDescrs().get( 0 );
assertEquals( "a",
fieldBindingDescr.getFieldName() );
assertEquals( "a4",
fieldBindingDescr.getIdentifier() );
constraint = (LiteralDescr) second.getDescrs().get( 1 );
assertNotNull( constraint );
assertEquals( "a",
constraint.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "4",
constraint.getText() );
// Check third column
final ColumnDescr third = (ColumnDescr) lhs.getDescrs().get( 2 );
assertNull( third.getIdentifier() );
assertEquals( "Baz",
third.getObjectType() );
assertEqualsIgnoreWhitespace( "if ( a == b ) { " + " assert( foo3 );" + "} else {" + " retract( foo4 );" + "}" + " System.out.println( a4 );",
rule.getConsequence() );
assertFalse( this.parser.hasErrors() );
}
public void testNotNode() throws Exception {
final RuleDescr rule = parseResource( "rule_not.drl" ).rule();
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
final AndDescr lhs = rule.getLhs();
assertEquals( 1,
lhs.getDescrs().size() );
final NotDescr not = (NotDescr) lhs.getDescrs().get( 0 );
assertEquals( 1,
not.getDescrs().size() );
final ColumnDescr col = (ColumnDescr) not.getDescrs().get( 0 );
assertEquals( "Cheese",
col.getObjectType() );
assertEquals( 1,
col.getDescrs().size() );
final LiteralDescr lit = (LiteralDescr) col.getDescrs().get( 0 );
assertEquals( "==",
lit.getEvaluator() );
assertEquals( "stilton",
lit.getText() );
assertEquals( "type",
lit.getFieldName() );
assertFalse( this.parser.hasErrors() );
}
public void testNotExistWithBrackets() throws Exception {
final RuleParser parser = parseResource( "not_exist_with_brackets.drl" );
parser.compilation_unit();
final PackageDescr pkg = parser.getPackageDescr();
final RuleDescr rule = (RuleDescr) pkg.getRules().get( 0 );
assertNotNull( rule );
assertEquals( "simple_rule",
rule.getName() );
final AndDescr lhs = rule.getLhs();
assertEquals( 2,
lhs.getDescrs().size() );
final NotDescr not = (NotDescr) lhs.getDescrs().get( 0 );
assertEquals( 1,
not.getDescrs().size() );
final ColumnDescr col = (ColumnDescr) not.getDescrs().get( 0 );
assertEquals( "Cheese",
col.getObjectType() );
final ExistsDescr ex = (ExistsDescr) lhs.getDescrs().get( 1 );
assertEquals( 1,
ex.getDescrs().size() );
final ColumnDescr exCol = (ColumnDescr) ex.getDescrs().get( 0 );
assertEquals( "Foo",
exCol.getObjectType() );
assertFalse( parser.hasErrors() );
}
public void testNotBindindShouldBarf() throws Exception {
final RuleParser parser = parseResource( "not_with_binding_error.drl" );
parser.compilation_unit();
assertTrue( parser.hasErrors() );
}
public void testSimpleQuery() throws Exception {
final QueryDescr query = parseResource( "simple_query.drl" ).query();
assertNotNull( query );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -