@Test public void testErrorsInParser() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackageFromDrl( new InputStreamReader( this.getClass().getResourceAsStream( "bad_rule.drl" ) ) ); assertTrue( builder.hasErrors() ); }
private void build(String msg, String resource, boolean showResults) throws DroolsParserException, IOException { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); long start = System.currentTimeMillis(); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( resource ) ) ); InternalKnowledgePackage pkg = builder.getPackage("org.drools.compiler.test"); assertFalse(builder.hasErrors()); assertNotNull(pkg); if (showResults) { System.out.print( "Time taken for " + msg + " : " + (System.currentTimeMillis() - start) ); } }
@Test public void testErrorReset() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); assertTrue( builder.hasErrors() ); builder.resetErrors(); assertFalse( builder.hasErrors() ); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); assertTrue( builder.hasErrors() ); }
private static InternalKnowledgePackage generatePackage(int ruleCount) throws DroolsParserException { StringReader reader = new StringReader(generateRules(ruleCount)); System.out.println("Generating packages"); KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(); try { pkgBuilder.addPackageFromDrl( reader ); } catch ( IOException e ) { fail( "Unable to parse rules\n" + e.getMessage()); } if ( pkgBuilder.hasErrors() ) { fail( pkgBuilder.getErrors().toString() ); } return pkgBuilder.getPackage("org.kie.test"); }
@Test public void testJaninoWithStaticImports() throws Exception { KnowledgeBuilderConfigurationImpl cfg = new KnowledgeBuilderConfigurationImpl(); JavaDialectConfiguration javaConf = (JavaDialectConfiguration) cfg.getDialectConfiguration( "java" ); javaConf.setCompiler( JavaDialectConfiguration.CompilerType.JANINO ); KnowledgeBuilderImpl bldr = new KnowledgeBuilderImpl( cfg ); bldr.addPackageFromDrl( new StringReader( "package testBuilderPackageConfig \n import java.util.List" ) ); bldr.addPackageFromDrl( new StringReader( "package testBuilderPackageConfig \n function void doSomething() {\n System.err.println(List.class.toString()); }" ) ); assertFalse( bldr.hasErrors() ); }
public boolean hasErrors() { return delegate.hasErrors(); }
@Test public void testResetWarningsButNotErrors() throws DroolsParserException, IOException { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); System.setProperty( "drools.kbuilder.severity." + DuplicateFunction.KEY, "ERROR"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return false;\n" + "}\n" ) ); assertTrue(builder.hasWarnings()); assertTrue(builder.hasErrors()); builder.resetWarnings(); assertFalse(builder.hasWarnings()); assertTrue(builder.hasErrors()); }
@Test public void testResetProblems() throws DroolsParserException, IOException { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); System.setProperty( "drools.kbuilder.severity." + DuplicateFunction.KEY, "ERROR"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); builder.addPackageFromDrl( new StringReader( "package foo \n rule ORB" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return false;\n" + "}\n" ) ); assertTrue(builder.hasWarnings()); assertTrue(builder.hasErrors()); builder.resetProblems(); assertFalse(builder.hasWarnings()); assertFalse(builder.hasErrors()); }
@Test public void testWarnings() { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "WARNING"); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); assertFalse(builder.hasErrors()); assertTrue(builder.hasWarnings()); }
@Test public void testWarningsReportAsErrors() { System.setProperty( "drools.kbuilder.severity." + DuplicateRule.KEY, "ERROR"); KnowledgeBuilderConfigurationImpl cfg = new KnowledgeBuilderConfigurationImpl(); final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(cfg); final PackageDescr packageDescr1 = createBasicPackageWithOneRule(11, 1); final PackageDescr packageDescr2 = createBasicPackageWithOneRule(22, 2); builder.addPackage(packageDescr1); builder.addPackage(packageDescr2); assertTrue(builder.hasErrors()); assertFalse(builder.hasWarnings()); }
" x + y " ); builder1.addPackage( packageDescr1 ); if ( builder1.hasErrors() ) { fail( builder1.getErrors().toString() );
"eval(x==y)" ); builder1.addPackage( packageDescr1 ); if ( builder1.hasErrors() ) { fail( builder1.getErrors().toString() ); "eval(x==y)" ); builder2.addPackage( packageDescr2 ); if ( builder2.hasErrors() ) { fail( builder2.getErrors().toString() ); if ( builder3.hasErrors() ) { fail( builder3.getErrors().toString() );
@Test public void testNot() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); // Make sure we can't accessa variable bound inside the not node RuleImpl rule = createRule( new NotDescr(), builder, "update(stilton);" ); assertTrue( builder.hasErrors() ); builder = new KnowledgeBuilderImpl(); rule = createRule( new NotDescr(), builder, "" ); assertEquals( 0, builder.getErrors().getErrors().length ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement not = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, not.getChildren() ); final Pattern pattern = (Pattern) not.getChildren().get( 0 ); }
@Test public void testTypeDeclaration() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "StockTick" ); typeDescr.addAnnotation( Role.class.getCanonicalName(), "Event" ); typeDescr.addAnnotation( TypeSafe.class.getCanonicalName(), "true" ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); if ( builder.hasErrors() ) { fail( builder.getErrors().toString() ); } InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "StockTick" ); assertTrue( type.isTypesafe() ); assertEquals( Role.Type.EVENT, type.getRole() ); assertEquals( StockTick.class, type.getTypeClass() ); }
@Test public void testExists() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); // Make sure we can't accessa variable bound inside the not node RuleImpl rule = createRule( new ExistsDescr(), builder, "update(stilton);" ); assertTrue( builder.hasErrors() ); builder = new KnowledgeBuilderImpl(); rule = createRule( new ExistsDescr(), builder, "" ); assertEquals( 0, builder.getErrors().getErrors().length ); final GroupElement lhs = rule.getLhs(); assertLength( 1, lhs.getChildren() ); final GroupElement exists = (GroupElement) lhs.getChildren().get( 0 ); assertLength( 1, exists.getChildren() ); final Pattern pattern = (Pattern) exists.getChildren().get( 0 ); }
knowledgeBuilder.add( new ByteArrayResource( drl.getBytes() ), ResourceType.DRL ); System.err.println( knowledgeBuilder.getErrors() ); assertFalse( knowledgeBuilder.getErrors().toString(), knowledgeBuilder.hasErrors() );
@Test public void testTypeDeclarationWithFieldMetadata() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "TypeWithFieldMeta" ); TypeFieldDescr f1 = new TypeFieldDescr( "field", new PatternDescr( "String" ) ); f1.addAnnotation("custom", null); typeDescr.addField( f1 ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage(pkgDescr); assertFalse(builder.hasErrors()); InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName()); final FactType factType = bp.getFactType("org.drools.compiler.test.TypeWithFieldMeta"); assertNotNull( factType ); final FactField field = factType.getField( "field" ); assertNotNull( field ); final Map<String, Object> fieldMetaData = field.getMetaData(); assertNotNull("No field-level custom metadata got compiled", fieldMetaData); assertTrue("Field metadata does not include expected value", fieldMetaData.containsKey("custom")); }
@Test public void testTypeDeclarationNewBean() throws Exception { PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); TypeDeclarationDescr typeDescr = new TypeDeclarationDescr( "NewBean" ); TypeFieldDescr f1 = new TypeFieldDescr( "name", new PatternDescr( "String" ) ); TypeFieldDescr f2 = new TypeFieldDescr( "age", new PatternDescr( "int" ) ); typeDescr.addField( f1 ); typeDescr.addField( f2 ); pkgDescr.addTypeDeclaration( typeDescr ); KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); builder.addPackage( pkgDescr ); InternalKnowledgePackage pkg = builder.getPackage(pkgDescr.getName()); assertEquals( 1, pkg.getTypeDeclarations().size() ); TypeDeclaration type = pkg.getTypeDeclaration( "NewBean" ); assertEquals( "NewBean", type.getTypeName() ); assertEquals( Role.Type.FACT, type.getRole() ); assertEquals( "org.drools.compiler.test.NewBean", type.getTypeClass().getName() ); assertFalse( builder.hasErrors() ); InternalKnowledgePackage bp = builder.getPackage(pkgDescr.getName()); Class newBean = bp.getPackageClassLoader().loadClass( "org.drools.compiler.test.NewBean" ); assertNotNull( newBean ); }
pkgBuilder.compileAll(); pkgBuilder.reloadAll(); if ( pkgBuilder.hasErrors() ) { fail(pkgBuilder.getErrors().toString());
assertFalse(builder.hasErrors());