}
@Test
public void testMockDialect() {
InternalKnowledgePackage pkg = new KnowledgePackageImpl( "org.pkg1" );
KnowledgeBuilderConfigurationImpl cfg1 = new KnowledgeBuilderConfigurationImpl();
MockDialectConfiguration mockConf = new MockDialectConfiguration();
// cfg1.buildDialectRegistry().addDialect( "mock",
// mockConf.getDialect() );
cfg1.addDialect( "mock",
mockConf );
cfg1.setDefaultDialect( "mock" );
KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl( pkg, cfg1 );
PackageRegistry pkgRegistry = builder.getPackageRegistry( pkg.getName() );
DialectCompiletimeRegistry dialectRegistry = pkgRegistry.getDialectCompiletimeRegistry();
MockDialect mockDialect2 = (MockDialect) dialectRegistry.getDialect( cfg1.getDefaultDialect() );
assertSame( pkg,
mockDialect2.getPkg() );
assertNull( mockDialect2.getRuleDescr() );
RuleDescr ruleDescr = new RuleDescr( "test rule" );
ruleDescr.addAttribute( new AttributeDescr( "dialect",
"mock" ) );
ruleDescr.setLhs( new AndDescr() );
EvalDescr evalDescr = new EvalDescr();
ruleDescr.getLhs().addDescr( evalDescr );
PackageDescr pkgDescr = new PackageDescr( "org.pkg1" );
pkgDescr.addImport( new ImportDescr( "java.util.HashMap" ) );
FunctionImportDescr functionImportDescr = new FunctionImportDescr();
functionImportDescr.setTarget( "java.lang.System.currentTimeMillis" );
pkgDescr.addFunctionImport( functionImportDescr );
pkgDescr.addRule( ruleDescr );
builder.addPackage( pkgDescr );
assertSame( ruleDescr,
mockDialect2.getRuleDescr() );
assertTrue( mockDialect2.getImport().contains( "java.util.HashMap" ) );
assertTrue( mockDialect2.getStaticImport().contains( "java.lang.System.currentTimeMillis" ) );
assertEquals( "eval was built",
evalDescr.getContent() );
assertEquals( "consequence was built",
ruleDescr.getConsequence() );
assertTrue( mockDialect2.isCompileAll() );
assertNotNull( pkg.getRule( "test rule" ) );
// make sure there were no other general errors.
assertFalse( builder.hasErrors() );
}