//
// assertEquals("Bam", ((PatternDescr)rule.getLhs().getDescrs().get(8)).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.getConsequencePattern() );
final AndDescr lhs = rule.getLhs();
assertNotNull( lhs );
assertEquals( 3,
lhs.getDescrs().size() );
//System.err.println( lhs.getDescrs() );
// Check first pattern
final PatternDescr first = (PatternDescr) lhs.getDescrs().get( 0 );
assertEquals( "foo3",
first.getIdentifier() );
assertEquals( "Bar",
first.getObjectType() );
assertEquals( 1,
first.getConstraint().getDescrs().size() );
AndDescr fieldAnd = (AndDescr) first.getConstraint();
FieldConstraintDescr fld = (FieldConstraintDescr) fieldAnd.getDescrs().get( 0 );
LiteralRestrictionDescr constraint = (LiteralRestrictionDescr) fld.getRestrictions().get( 0 );
assertNotNull( constraint );
assertEquals( "a",
fld.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "3",
constraint.getText() );
// Check second pattern
final PatternDescr second = (PatternDescr) lhs.getDescrs().get( 1 );
assertEquals( "foo4",
second.getIdentifier() );
assertEquals( "Bar",
second.getObjectType() );
//System.err.println( second.getDescrs() );
fieldAnd = (AndDescr) second.getConstraint();
assertEquals( 2,
fieldAnd.getDescrs().size() );
final FieldBindingDescr fieldBindingDescr = (FieldBindingDescr) fieldAnd.getDescrs().get( 0 );
assertEquals( "a",
fieldBindingDescr.getFieldName() );
assertEquals( "a4",
fieldBindingDescr.getIdentifier() );
fld = (FieldConstraintDescr) fieldAnd.getDescrs().get( 1 );
constraint = (LiteralRestrictionDescr) fld.getRestrictions().get( 0 );
assertNotNull( constraint );
assertEquals( "a",
fld.getFieldName() );
assertEquals( "==",
constraint.getEvaluator() );
assertEquals( "4",
constraint.getText() );
// Check third pattern
final PatternDescr third = (PatternDescr) lhs.getDescrs().get( 2 );
assertNull( third.getIdentifier() );
assertEquals( "Baz",
third.getObjectType() );
assertEqualsIgnoreWhitespace( "if ( a == b ) { " + " assert( foo3 );" + "} else {" + " retract( foo4 );" + "}" + " System.out.println( a4 );",
(String) rule.getConsequence() );
assertFalse( this.parser.hasErrors() );
}