KnowledgeBuilderError[] errors = kbuilder.getErrors().toArray( new KnowledgeBuilderError[0] );
assertEquals( 3,
errors.length );
final DescrBuildError stiltonError = (DescrBuildError) errors[0];
assertTrue( stiltonError.getMessage().contains( "Stilton" ) );
assertNotNull( stiltonError.getDescr() );
assertTrue( stiltonError.getLine() != -1 );
// check that its getting it from the ruleDescr
assertEquals( stiltonError.getLine(),
stiltonError.getDescr().getLine() );
// check the absolute error line number (there are more).
assertEquals( 11,
stiltonError.getLine() );
final DescrBuildError poisonError = (DescrBuildError) errors[1];
assertTrue( poisonError.getMessage().contains( "Poison" ) );
assertEquals( 13,
poisonError.getLine() );
KnowledgeBuilderConfigurationImpl cfg = new KnowledgeBuilderConfigurationImpl();
JavaDialectConfiguration javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" );
switch ( javaConf.getCompiler() ) {
case JavaDialectConfiguration.NATIVE : assertTrue( errors[2].getMessage().contains( "illegal" ) );
break;
case JavaDialectConfiguration.ECLIPSE: assertTrue( errors[2].getMessage().contains( "add" ) );
break;
case JavaDialectConfiguration.JANINO: assertTrue( errors[2].getMessage().contains( "Unexpected" ) );
break;
default: fail( "Unknown compiler used" );
}
// now check the RHS, not being too specific yet, as long as it has the
// rules line number, not zero
final DescrBuildError rhsError = (DescrBuildError) errors[2];
assertTrue( rhsError.getLine() >= 8 && rhsError.getLine() <= 17 ); // TODO this should be 16
}