Refine search
@Test public void testRuleFlowUpgrade() throws Exception { assertNotNull( in ); builder.addPackage( new PackageDescr( "com.sample" ) );
@Test public void testPackageMerge() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); try { builder.addPackage( new PackageDescr( "org.drools" ) ); builder.addPackageFromDrl( new StringReader( "package org.drools\n" + "function boolean testIt() {\n" + " return true;\n" + "}\n" ) ); } catch ( RuntimeException e ) { fail( "Should not raise any exception: " + e.getMessage() ); } }
@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()); }
private void createLiteralRule( final BaseDescr descr ) { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Primitives.class.getName() ); lhs.addDescr( pattern ); pattern.addConstraint( descr ); ruleDescr.setConsequence( "" ); builder.addPackage( packageDescr ); assertLength( 0, builder.getErrors().getErrors() ); }
@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()); }
@Test @Ignore public void testNoPackageName() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); try { builder.addPackage( new PackageDescr( null ) ); fail( "should have errored here." ); } catch ( final RuntimeException e ) { assertNotNull( e.getMessage() ); } try { builder.addPackage( new PackageDescr( "" ) ); fail( "should have errored here." ); } catch ( final RuntimeException e ) { assertNotNull( e.getMessage() ); } builder.addPackageFromDrl( new StringReader( "package foo" ) ); builder.addPackageFromDrl( new StringReader( "rule x then end" ) ); }
@Test public void testRuleFlow() throws Exception { InputStream in = this.getClass().getResourceAsStream( "/org/jbpm/integrationtests/ruleflow.rfm" ); assertNotNull( in ); builder.addPackage( new PackageDescr( "com.sample" ) ); builder.addRuleFlow( new InputStreamReader( in ) ); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); assertNotNull( pkg ); Map<String, Process> flows = pkg.getRuleFlows(); assertNotNull( flows ); assertEquals( 1, flows.size() ); assertTrue( flows.containsKey( "0" ) ); Process p = (Process) flows.get( "0" ); assertTrue( p instanceof WorkflowProcessImpl ); //now serialization InternalKnowledgePackage pkg2 = (InternalKnowledgePackage) DroolsStreamUtils.streamIn( DroolsStreamUtils.streamOut( pkg ) ); assertNotNull( pkg2 ); flows = pkg2.getRuleFlows(); assertNotNull( flows ); assertEquals( 1, flows.size() ); assertTrue( flows.containsKey( "0" ) ); p = (Process) flows.get( "0" ); assertTrue( p instanceof WorkflowProcessImpl ); }
@Test public void testResetWarnings() { 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); assertTrue(builder.hasWarnings()); builder.resetWarnings(); assertFalse(builder.hasWarnings()); builder.addPackage(packageDescr1); assertTrue(builder.hasWarnings()); }
@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 testDebug() throws Exception { String rule = "package com.sample; dialect \"mvel\" rule myRule when then\n System.out.println( \"test\" ); end"; KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); PackageDescr packageDescr = parser.parse(null, rule); RuleDescr ruleDescr = packageDescr.getRules().get(0); builder = new KnowledgeBuilderImpl( ); builder.addPackage(packageDescr); InternalKnowledgePackage pkg = builder.getPackage("com.sample"); MVELConsequence consequence = (MVELConsequence) pkg.getRule("myRule").getConsequence(); String sourceName = ((CompiledExpression) consequence.getCompExpr()).getSourceName(); System.out.println(sourceName); String ruleName = ruleDescr.getNamespace() + "." + ruleDescr.getClassName(); System.out.println(ruleName); assertEquals(sourceName, ruleName); }
@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 testEvalMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createEvalRule( packageDescr1, "1==1" ); builder1.addPackage( packageDescr1 ); final EvalCondition eval1 = (EvalCondition) ((RuleImpl)builder1.getPackage("package1").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder2 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr2 = new PackageDescr( "package2" ); createEvalRule( packageDescr2, "1==1" ); builder2.addPackage( packageDescr2 ); final EvalCondition eval2 = (EvalCondition) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final KnowledgeBuilderImpl builder3 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr3 = new PackageDescr( "package3" ); createEvalRule( packageDescr3, "1==3" ); builder3.addPackage( packageDescr3 ); final EvalCondition eval3 = (EvalCondition) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); assertEquals( eval1, eval2 ); assertFalse( eval1.equals( eval3 ) ); assertFalse( eval2.equals( eval3 ) ); }
@Test public void testReturnValueMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createReturnValueRule( packageDescr1, " x + y " ); builder1.addPackage( packageDescr1 ); if ( builder1.hasErrors() ) { fail( builder1.getErrors().toString() ); final Constraint returnValue1 = pattern1.getConstraints().get( 0 ); final KnowledgeBuilderImpl builder2 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr2 = new PackageDescr( "package2" ); createReturnValueRule( packageDescr2, " x + y " ); builder2.addPackage( packageDescr2 ); final Pattern pattern2 = (Pattern) ((RuleImpl)builder2.getPackage("package2").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue2 = pattern2.getConstraints().get( 0 ); final KnowledgeBuilderImpl builder3 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr3 = new PackageDescr( "package3" ); createReturnValueRule( packageDescr3, " x - y " ); builder3.addPackage( packageDescr3 ); final Pattern pattern3 = (Pattern) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final Constraint returnValue3 = pattern3.getConstraints().get( 0 );
@Test public void testCompilerConfiguration() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); PackageDescr pkgDescr = new PackageDescr( "org.drools.compiler.test" ); builder.addPackage( pkgDescr ); DialectCompiletimeRegistry reg = builder.getPackageRegistry( pkgDescr.getName() ).getDialectCompiletimeRegistry(); javaConf = (JavaDialectConfiguration) conf.getDialectConfiguration( "java" ); javaConf.setCompiler( JavaDialectConfiguration.CompilerType.JANINO ); builder = new KnowledgeBuilderImpl( conf ); builder.addPackage( pkgDescr ); javaConf = (JavaDialectConfiguration) conf.getDialectConfiguration( "java" ); javaConf.setCompiler( JavaDialectConfiguration.CompilerType.ECLIPSE ); builder = new KnowledgeBuilderImpl( conf ); builder.addPackage( pkgDescr );
@Test public void testInvalidDialect() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); ruleDescr.addAttribute( new AttributeDescr( "dialect", "mvl" ) ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertFalse(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); }
@Test public void testLiteral() throws Exception { final KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); final PackageDescr packageDescr = new PackageDescr( "p1" ); final RuleDescr ruleDescr = new RuleDescr( "rule-1" ); packageDescr.addRule( ruleDescr ); final AndDescr lhs = new AndDescr(); ruleDescr.setLhs( lhs ); final PatternDescr pattern = new PatternDescr( Cheese.class.getName(), "stilton" ); lhs.addDescr( pattern ); pattern.addConstraint( new ExprConstraintDescr( "type == 'stilton'" ) ); ruleDescr.setConsequence( "update(stilton);" ); builder.addPackage( packageDescr ); assertLength( 0, builder.getErrors().getErrors() ); }
@Test public void testPredicateMethodCompare() { final KnowledgeBuilderImpl builder1 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr1 = new PackageDescr( "package1" ); createPredicateRule( packageDescr1, "eval(x==y)" ); builder1.addPackage( packageDescr1 ); if ( builder1.hasErrors() ) { fail( builder1.getErrors().toString() ); final PredicateConstraint predicate1 = (PredicateConstraint) pattern1.getConstraints().get( 0 ); final KnowledgeBuilderImpl builder2 = new KnowledgeBuilderImpl(); final PackageDescr packageDescr2 = new PackageDescr( "package2" ); createPredicateRule( packageDescr2, "eval(x==y)" ); builder2.addPackage( packageDescr2 ); if ( builder2.hasErrors() ) { fail( builder2.getErrors().toString() ); final PredicateConstraint predicate2 = (PredicateConstraint) pattern2.getConstraints().get( 0 ); createPredicateRule( packageDescr3, "eval(x!=y)" ); builder3.addPackage( packageDescr3 ); final Pattern pattern3 = (Pattern) ((RuleImpl)builder3.getPackage("package3").getRules().iterator().next()).getLhs().getChildren().get( 0 ); final PredicateConstraint predicate3 = (PredicateConstraint) pattern3.getConstraints().get( 0 );
@Test public void testBuild() throws Exception { final DrlParser parser = new DrlParser(LanguageLevelOption.DRL5); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(new PackageDescr("org.drools")); InternalKnowledgePackage pkg = kBuilder.getPackage("org.drools"); "java")); kBuilder.addPackage(pkgDescr);
@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 testBuildRuleBuildContextBaseDescr() { final KnowledgeBuilderImpl pkgBuilder = new KnowledgeBuilderImpl(); pkgBuilder.addPackage( new PackageDescr( "org.drools" ) ); final KnowledgeBuilderConfigurationImpl conf = pkgBuilder.getBuilderConfiguration(); PackageRegistry pkgReg = pkgBuilder.getPackageRegistry( "org.drools" );